2 #ifndef comfrm_cls_NodeProtocolH
3 #define comfrm_cls_NodeProtocolH
6 #include "streamtools.h"
10 #define MAX_APP_SID_SIZE 100
19 unsigned int m_bodySize;
33 friend std::ostream& operator<<(std::ostream& o_out,
const NodeHandshake& p_reg);
34 friend std::istream& operator>>(std::istream& o_in,
NodeHandshake& o_reg);
44 enum ProtocolVersion :
char
50 enum MessageType :
char
61 template<
typename T >
62 size_t read(std::vector< char >& p_bytearray, std::string& o_senderAppSid, std::string& o_receiverAppSid, T& o_data)
66 vs.read((
char*) &header,
sizeof(header));
67 if (header.m_messageType != getTypeByData< T >())
72 vs.read((
char*) &senderAppSidSize,
sizeof(senderAppSidSize));
73 char* senderAppSidBuf =
new char[senderAppSidSize];
74 vs.read(senderAppSidBuf, senderAppSidSize);
75 o_senderAppSid = std::string(senderAppSidBuf, senderAppSidSize);
76 delete[] senderAppSidBuf;
79 int receiverAppSidSize;
80 vs.read((
char*) &receiverAppSidSize,
sizeof(receiverAppSidSize));
81 char* receiverAppSidBuf =
new char[receiverAppSidSize];
82 vs.read(receiverAppSidBuf, receiverAppSidSize);
83 o_receiverAppSid = std::string(receiverAppSidBuf, receiverAppSidSize);
84 delete[] receiverAppSidBuf;
91 template<
typename T >
92 void write(
const std::string& p_senderAppSid,
const std::string& p_receiverAppSid,
const T& p_data, std::vector< char >& o_bytearray)
96 vs.write((
const char*) &header,
sizeof(header));
98 int senderAppSidSize = p_senderAppSid.size();
99 vs.write((
const char*) &senderAppSidSize,
sizeof(senderAppSidSize));
100 vs.write(p_senderAppSid.c_str(), senderAppSidSize);
102 int receiverAppSidSize = p_receiverAppSid.size();
103 vs.write((
const char*) &receiverAppSidSize,
sizeof(receiverAppSidSize));
104 vs.write(p_receiverAppSid.c_str(), receiverAppSidSize);
109 finalize(o_bytearray);
113 template<
typename T >
114 inline MessageType getTypeByData();
116 void finalize(std::vector< char >& o_bytearray);
Definition: node_protocol.h:41
Векторный поток
Definition: streamtools.h:35
Definition: node_protocol.h:23
size_t bytesAvailable()
Definition: streamtools.h:50