-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathUnixSocketProtocol.cpp
More file actions
57 lines (55 loc) · 1.95 KB
/
UnixSocketProtocol.cpp
File metadata and controls
57 lines (55 loc) · 1.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include "UnixSocketProtocol.hpp"
//-------------------------------------------------------------------------------------------------
bool UnixSocketCommand::Do(string& result,COMMAND_FUNCTION unix_socket_command_function)
{
result="";
if(cmd=="test")
result="ok"+NC_END_TOKEN;
else if(cmd==UNIX_SOCKET_COMMAND_START_WATCHER||
cmd==UNIX_SOCKET_COMMAND_START_SENDER1||
cmd==UNIX_SOCKET_COMMAND_START_SENDER2||
cmd==UNIX_SOCKET_COMMAND_STOP_SENDER||
cmd==UNIX_SOCKET_COMMAND_STOP_WATCHER||
cmd==UNIX_SOCKET_COMMAND_SET_SENDER_UPDATE_MODE_TRUE||
cmd==UNIX_SOCKET_COMMAND_SET_SENDER_UPDATE_MODE_FALSE||
cmd==UNIX_SOCKET_COMMAND_GET_SENDER_LAST_READ_TIME||
cmd==UNIX_SOCKET_COMMAND_GET_WATCHER_STATUS||
cmd==UNIX_SOCKET_COMMAND_GET_SENDER_STATUS||
cmd==UNIX_SOCKET_COMMAND_UPDATE_CONF)
{
unix_socket_command_function(cmd,result);
result+=NC_END_TOKEN;
}
else
result="unknown command "+cmd+NC_END_TOKEN;
return true;
}
//-------------------------------------------------------------------------------------------------
bool UnixSocketProtocol::Eat(const string& content,vector<UnixSocketCommand>& uscs)
{
buffer+=content;
int ep=0;
while(current_pos<int(buffer.size()))
{
ep=buffer.find(NC_END_TOKEN,current_pos);
if(ep==int(string::npos))
return false;
vector<string> items;
char tc=buffer[ep];
buffer[ep]=0;
const string& s=&(buffer[current_pos]);
SplitString(s,items," \t");
if(items.empty()==false)
{
UnixSocketCommand usc;
usc.cmd=items[0];
for(int i=1;i<int(items.size());i++)
usc.params.push_back(items[i]);
uscs.push_back(usc);
}
buffer[ep]=tc;
current_pos=ep+NC_END_TOKEN.size();
}//end while
return true;
}
//-------------------------------------------------------------------------------------------------