24 #ifndef GATEWAY_CLIENT_CREATE_H 25 #define GATEWAY_CLIENT_CREATE_H 35 l_GatewayClientCreate.m_ReferenceNbr = a_ReferenceNbr;
36 l_GatewayClientCreate.m_RemoteAddress = a_RemoteAddress;
37 l_GatewayClientCreate.m_RemotePortNbr = a_RemotePortNbr;
38 return l_GatewayClientCreate;
43 l_GatewayClientCreate->m_eDeserialize = DESERIALIZE_HEADER;
44 l_GatewayClientCreate->m_BytesRemaining = 6;
45 return l_GatewayClientCreate;
50 assert(m_eDeserialize == DESERIALIZE_FULL);
51 return m_ReferenceNbr;
55 assert(m_eDeserialize == DESERIALIZE_FULL);
56 return m_RemoteAddress;
60 assert(m_eDeserialize == DESERIALIZE_FULL);
61 return m_RemotePortNbr;
66 GatewayClientCreate(): m_ReferenceNbr(0), m_RemotePortNbr(0), m_eDeserialize(DESERIALIZE_FULL) {
73 const std::vector<unsigned char> Serialize()
const {
74 assert(m_eDeserialize == DESERIALIZE_FULL);
75 std::vector<unsigned char> l_Buffer;
77 l_Buffer.emplace_back((m_ReferenceNbr >> 8) & 0xFF);
78 l_Buffer.emplace_back((m_ReferenceNbr >> 0) & 0xFF);
79 l_Buffer.emplace_back((m_RemotePortNbr >> 8) & 0xFF);
80 l_Buffer.emplace_back((m_RemotePortNbr >> 0) & 0xFF);
81 l_Buffer.emplace_back((m_RemoteAddress.size()) & 0xFF);
82 l_Buffer.insert(l_Buffer.end(), m_RemoteAddress.data(), (m_RemoteAddress.data() + m_RemoteAddress.size()));
89 switch (m_eDeserialize) {
90 case DESERIALIZE_HEADER: {
94 m_ReferenceNbr = ntohs(*(reinterpret_cast<const uint16_t*>(&
m_Buffer[1])));
95 m_RemotePortNbr = ntohs(*(reinterpret_cast<const uint16_t*>(&
m_Buffer[3])));
99 m_eDeserialize = DESERIALIZE_BODY;
101 m_eDeserialize = DESERIALIZE_FULL;
106 case DESERIALIZE_BODY: {
108 m_eDeserialize = DESERIALIZE_FULL;
111 case DESERIALIZE_ERROR:
112 case DESERIALIZE_FULL:
122 uint16_t m_ReferenceNbr;
123 std::string m_RemoteAddress;
124 uint16_t m_RemotePortNbr;
126 DESERIALIZE_ERROR = 0,
127 DESERIALIZE_HEADER = 1,
128 DESERIALIZE_BODY = 2,
131 E_DESERIALIZE m_eDeserialize;
134 #endif // GATEWAY_CLIENT_CREATE_H
uint16_t GetRemotePortNbr() const
static std::shared_ptr< GatewayClientCreate > CreateDeserializedFrame()
static GatewayClientCreate Create(uint16_t a_ReferenceNbr, std::string a_RemoteAddress, uint16_t a_RemotePortNbr)
uint16_t GetReferenceNbr() const
std::vector< unsigned char > m_Buffer
The buffer containing partly received frames or higher-layer payload.
std::string GetRemoteAddress() const
size_t m_BytesRemaining
The amount of bytes required to finalize frame assembly during reception.