MCPcopy Create free account
hub / github.com/Tencent/phxpaxos / PackBaseMsg

Method PackBaseMsg

src/algorithm/base.cpp:98–130  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

96}
97
98void Base :: PackBaseMsg(const std::string & sBodyBuffer, const int iCmd, std::string & sBuffer)
99{
100 char sGroupIdx[GROUPIDXLEN] = {0};
101 int iGroupIdx = m_poConfig->GetMyGroupIdx();
102 memcpy(sGroupIdx, &iGroupIdx, sizeof(sGroupIdx));
103
104 Header oHeader;
105 oHeader.set_gid(m_poConfig->GetGid());
106 oHeader.set_rid(0);
107 oHeader.set_cmdid(iCmd);
108 oHeader.set_version(1);
109
110 std::string sHeaderBuffer;
111 bool bSucc = oHeader.SerializeToString(&sHeaderBuffer);
112 if (!bSucc)
113 {
114 PLGErr("Header.SerializeToString fail, skip this msg");
115 assert(bSucc == true);
116 }
117
118 char sHeaderLen[HEADLEN_LEN] = {0};
119 uint16_t iHeaderLen = (uint16_t)sHeaderBuffer.size();
120 memcpy(sHeaderLen, &iHeaderLen, sizeof(sHeaderLen));
121
122 sBuffer = string(sGroupIdx, sizeof(sGroupIdx)) + string(sHeaderLen, sizeof(sHeaderLen)) + sHeaderBuffer + sBodyBuffer;
123
124 //check sum
125 uint32_t iBufferChecksum = crc32(0, (const uint8_t *)sBuffer.data(), sBuffer.size(), NET_CRC32SKIP);
126 char sBufferChecksum[CHECKSUM_LEN] = {0};
127 memcpy(sBufferChecksum, &iBufferChecksum, sizeof(sBufferChecksum));
128
129 sBuffer += string(sBufferChecksum, sizeof(sBufferChecksum));
130}
131
132int Base :: UnPackBaseMsg(const std::string & sBuffer, Header & oHeader, size_t & iBodyStartPos, size_t & iBodyLen)
133{

Callers

nothing calls this directly

Calls 2

crc32Function · 0.85
sizeMethod · 0.80

Tested by

no test coverage detected