Skip to content

Commit 07274b4

Browse files
committed
Implemented message numbers search on server-side
1 parent 4223249 commit 07274b4

File tree

5 files changed

+35
-19
lines changed

5 files changed

+35
-19
lines changed

client/MainConsole.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ namespace simpleApp
139139
switch (currentState)
140140
{
141141
case console_state::msg_input:
142-
/* code */
142+
143143
break;
144144

145145
default:

server/SessionTcp.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,11 @@ namespace simpleApp
8989
return session_result(session_status::proceed_wrong_header);
9090
}
9191

92-
uint8_t buff[MESSAGE_MAX_BUFFER];
92+
char buff[MESSAGE_MAX_BUFFER - sizeof(msg_headers)];
9393

94-
auto sendLen = proceedMsg(buffer, len, buff);
94+
auto sendLen = proceedMsg(reinterpret_cast<char*>(buffer + static_cast<ptrdiff_t>(sizeof(msg_headers))), len - sizeof(msg_headers), buff);
9595

96-
if (send(this->_socket, buff, sendLen, 0) == -1)
96+
if (this->sendMessage(msg_headers::server_msg, buff, sendLen) == -1)
9797
return session_result(session_status::proceed_send_fail, errno);
9898

9999
return session_result(session_status::proceed_msg_send);

server/SessionUdp.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -256,11 +256,11 @@ namespace simpleApp
256256
}
257257
else if (header == msg_headers::client_msg)
258258
{
259-
uint8_t buff[MESSAGE_MAX_BUFFER];
260-
261-
auto sendLen = proceedMsg(msgBuff, len, buff);
262-
263-
if (send(this->_socket, buff, sendLen, 0) == -1)
259+
char buff[MESSAGE_MAX_BUFFER - sizeof(msg_headers)];
260+
261+
auto sendLen = proceedMsg(reinterpret_cast<char*>(msgBuff + static_cast<ptrdiff_t>(sizeof(msg_headers))), len - sizeof(msg_headers), buff);
262+
263+
if (this->sendMessage(msg_headers::server_msg, buff, sendLen) == -1)
264264
return session_result(session_status::proceed_send_fail, errno);
265265
return session_result(session_status::proceed_msg_send);
266266
}

server/message.cpp

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,38 @@
22

33
#include <string>
44
#include <cstring>
5+
#include <regex>
56

67
#include <simple_lib/common.h>
78

89
namespace simpleApp
910
{
10-
size_t proceedMsg(uint8_t* in, size_t len, uint8_t* out)
11+
int proceedMsg(char* in, size_t len, char* out)
1112
{
12-
// TODO replace this with required logic
13-
const msg_headers buffHeader = msg_headers::server_msg;
14-
const char* msg = "DELIVERED";
15-
const size_t size = sizeof("DELIVERED");
13+
auto msgReceived = std::string(in, len);
14+
bool isFound = false;
15+
unsigned long value = 0;
1616

17-
18-
std::memcpy(out, &buffHeader, sizeof(buffHeader));
19-
std::memcpy(out + static_cast<ptrdiff_t>(sizeof(buffHeader)), msg, size);
17+
const std::regex r("[0123456789]+");
2018

21-
return sizeof(buffHeader) + size;
19+
for (std::sregex_iterator it = std::sregex_iterator(msgReceived.begin(), msgReceived.end(), r);
20+
it != std::sregex_iterator(); it++)
21+
{
22+
isFound = true;
23+
std::smatch match;
24+
match = *it;
25+
value += std::stoi(match.str());
26+
}
27+
if (isFound)
28+
{
29+
auto line = std::to_string(value);
30+
std::memcpy(out, line.c_str(), line.size());
31+
return line.size();
32+
}
33+
else
34+
{
35+
std::memcpy(out, in, len);
36+
return len;
37+
}
2238
}
2339
}

server/message.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@
55

66
namespace simpleApp
77
{
8-
size_t proceedMsg(uint8_t* in, size_t len, uint8_t* out);
8+
int proceedMsg(char* in, size_t len, char* out);
99
}

0 commit comments

Comments
 (0)