1 #include "otsdaq/NetworkUtilities/TCPPacket.h"
8 TCPPacket::TCPPacket() : fBuffer(
"") {}
11 TCPPacket::~TCPPacket(
void) {}
14 std::string TCPPacket::encode(
const std::string& message)
16 uint32_t length = htonl(TCPPacket::headerLength + message.length());
17 std::string buffer = std::string(TCPPacket::headerLength,
' ') +
19 buffer[0] = (length)&0xff;
20 buffer[1] = (length >> 8) & 0xff;
21 buffer[2] = (length >> 16) & 0xff;
22 buffer[3] = (length >> 24) & 0xff;
40 void TCPPacket::reset(
void) { fBuffer.clear(); }
43 bool TCPPacket::decode(std::string& message)
45 if(fBuffer.length() < headerLength)
47 uint32_t length = ntohl(reinterpret_cast<uint32_t&>(
54 std::cout << __PRETTY_FUNCTION__
63 if(fBuffer.length() == length)
65 message = fBuffer.substr(headerLength);
69 else if(fBuffer.length() > length)
71 message = fBuffer.substr(headerLength, length - headerLength);
72 std::cout << __PRETTY_FUNCTION__ <<
"Erasing: " << length
76 fBuffer.erase(0, length);
81 std::cout << __PRETTY_FUNCTION__
82 <<
"Can't decode an incomplete message! Length is only: "
83 << fBuffer.length() << std::endl;