1 #include "otsdaq/NetworkUtilities/TCPPacket.h"
8 TCPPacket::TCPPacket() : fBuffer(
"") {}
11 TCPPacket::~TCPPacket(
void) {}
14 std::string TCPPacket::encode(
char const* message, std::size_t length)
16 return encode(std::string(message, length));
20 std::string TCPPacket::encode(
const std::string& message)
22 uint32_t size = htonl(TCPPacket::headerLength + message.length());
23 std::string buffer = std::string(TCPPacket::headerLength,
' ') +
25 buffer[0] = (size) & 0xff;
26 buffer[1] = (size >> 8) & 0xff;
27 buffer[2] = (size >> 16) & 0xff;
28 buffer[3] = (size >> 24) & 0xff;
49 bool TCPPacket::isEmpty(
void) {
return !fBuffer.size(); }
52 bool TCPPacket::decode(std::string& message)
54 if(fBuffer.length() < headerLength)
56 uint32_t length = ntohl(
reinterpret_cast<uint32_t&
>(
72 if(fBuffer.length() == length)
74 message = fBuffer.substr(headerLength);
78 else if(fBuffer.length() > length)
80 message = fBuffer.substr(headerLength, length - headerLength);
85 fBuffer.erase(0, length);
void reset(void)
Resets the storage buffer.