14 constexpr std::uint8_t kStx = 0x02u;
20 : m_rtransport(rTransport), m_reqID(0), m_sessionID(0)
39 constexpr std::size_t numExpectedStx = 4u;
40 std::size_t stxRecvLeft = numExpectedStx;
42 while (stxRecvLeft > 0u)
56 ByteBuffer::iterator it{buffer.begin()};
57 while (it != buffer.end())
65 buffer.erase(buffer.begin(), it);
66 stxRecvLeft = numExpectedStx;
81 const std::uint32_t
length = readUnalignBigEndian<std::uint32_t>(buffer.data());
101 buffer.erase(buffer.begin(), buffer.begin() + 2u);
112 if (buffer.size() < 4u + 2u)
119 rSessionId = readUnalignBigEndian<std::uint32_t>(buffer.data());
120 rReqId = readUnalignBigEndian<std::uint16_t>(buffer.data() + 4u);
122 buffer.erase(buffer.begin(), buffer.begin() + (4u + 2u));
129 std::size_t extraReserve)
132 header.reserve(4u + 4u + 1u + 1u + extraReserve);
139 const std::uint32_t v =
static_cast<std::uint32_t
>(payloadSize) + 1u + 1u;
141 writeUnalignBigEndian<std::uint32_t>(b,
sizeof(b), v);
156 std::size_t extraReserve)
158 constexpr std::size_t cmdHeaderSize = 4u + 2u;
186 constexpr std::size_t cmdOffset = 1u;
190 buffer.insert(buffer.end(), cmdBuffer.begin() + cmdOffset, cmdBuffer.end());
201 std::uint32_t sessionId;
225 static const std::string clientid =
"svs";
226 const std::size_t cmdSize = 2u + 1u + 2u + clientid.size();
232 buffer.push_back(
static_cast<std::uint8_t
>(
'O'));
233 buffer.push_back(
static_cast<std::uint8_t
>(
'x'));
234 buffer.push_back(sessionTimeout);
237 const std::uint16_t v =
static_cast<std::uint16_t
>(clientid.size());
239 writeUnalignBigEndian<std::uint16_t>(b,
sizeof(b), v);
240 buffer.insert(buffer.end(), b, b + 2u);
242 for (
auto c : clientid)
244 buffer.push_back(
static_cast<std::uint8_t
>(c));
257 std::uint32_t sessionId = 0u;
258 std::uint16_t reqId = 0u;