30 const std::uint16_t net = htons(v);
31 buf.
write(&net,
sizeof(net));
40 const std::uint32_t net = htonl(v);
41 buf.
write(&net,
sizeof(net));
48 return write_u32(buf,
static_cast<std::uint32_t
>(v >> 32))
49 &&
write_u32(buf,
static_cast<std::uint32_t
>(v & 0xffffffff));
58 buf.
read(&net,
sizeof(net));
69 buf.
read(&net,
sizeof(net));
80 out = (
static_cast<std::uint64_t
>(hi) << 32) | lo;
size_t size() const
Returns the size of the buffer in T objects.
void write(const T *data, const size_t size)
Write data to the buffer.
size_t remaining(const size_t tailroom=0) const
Return the number of additional T objects that can be added before capacity is reached (without consi...
void read(NCT *data, const size_t size)
Read data from the buffer into the specified memory location.
bool read_u32(Buffer &buf, std::uint32_t &out)
Read a big-endian uint32 from buf into out; false if fewer than 4 bytes.
bool read_u16(Buffer &buf, std::uint16_t &out)
Read a big-endian uint16 from buf into out; false if fewer than 2 bytes.
bool write_u16(Buffer &buf, std::uint16_t v)
Append a big-endian uint16 to buf; false if there is no room.
bool write_u64(Buffer &buf, std::uint64_t v)
Append a big-endian uint64 to buf; false if there is no room.
bool read_u64(Buffer &buf, std::uint64_t &out)
Read a big-endian uint64 from buf into out; false if fewer than 8 bytes.
bool write_u32(Buffer &buf, std::uint32_t v)
Append a big-endian uint32 to buf; false if there is no room.
static std::stringstream out