ryu_ldn::protocol::PacketBuffer
ryu_ldn::protocol::PacketBuffer
Section titled “ryu_ldn::protocol::PacketBuffer”TCP stream buffer for accumulating and extracting packets.
Usage:
Members
Section titled “Members”m_buffer
Section titled “m_buffer”Type: uint8_t
m_write_pos
Section titled “m_write_pos”Type: size_t
Methods
Section titled “Methods”PacketBuffer
Section titled “PacketBuffer”void PacketBuffer()Default constructor - initializes empty buffer.
Note: For production use, BufferSize should be >= sizeof(LdnHeader) + MAX_PACKET_SIZE to handle maximum-sized packets. Smaller buffers can be used for testing or when only small packets are expected.
void reset()Reset buffer to empty state.
size_t size()Get current data size in buffer.
Number of bytes in bufferreturn
Returns: size_t
bool empty()Check if buffer is empty.
true if no data in bufferreturn
Returns: bool
available
Section titled “available”size_t available()Get available space in buffer.
Number of bytes that can be appendedreturn
Returns: size_t
const uint8_t * data()Get pointer to raw buffer data.
Pointer to buffer startreturn
Returns: const uint8_t *
append
Section titled “append”BufferResult append(const uint8_t * data, size_t size)Append data to buffer.
dataData to appendsizeSize of dataparamor errorreturn
Parameters:
data(const uint8_t *)size(size_t)
Returns: BufferResult
has_complete_packet
Section titled “has_complete_packet”bool has_complete_packet()Check if buffer contains a complete packet.
true if at least one complete packet is availablereturn
Returns: bool
peek_packet_info
Section titled “peek_packet_info”BufferResult peek_packet_info(size_t & packet_size)Get information about next packet without consuming it.
packet_sizeSize of complete packet (if available)paramBufferResult indicating statusreturn
Parameters:
packet_size(size_t &)
Returns: BufferResult
peek_packet
Section titled “peek_packet”const uint8_t * peek_packet(size_t & packet_size)Peek at the next complete packet without consuming it.
packet_sizeSize of the packetparamPointer to packet data, or nullptr if no complete packetreturn
Parameters:
packet_size(size_t &)
Returns: const uint8_t *
peek_packet_type
Section titled “peek_packet_type”PacketId peek_packet_type()Get packet type of next packet (if available)
PacketId of next packet, or Initialize (0) if no packetreturn
Returns: PacketId
consume
Section titled “consume”void consume(size_t size)Consume (remove) bytes from the front of the buffer.
Typically called after processing a packet to remove it from buffer. Uses memmove to shift remaining data to front.
Parameters:
size(size_t)
extract_packet
Section titled “extract_packet”BufferResult extract_packet(uint8_t * out_buffer, size_t out_buffer_size, size_t & packet_size)Extract next complete packet into output buffer.
Copies the packet to output buffer and consumes it from internal buffer.
Parameters:
out_buffer(uint8_t *)out_buffer_size(size_t)packet_size(size_t &)
Returns: BufferResult
discard_until_valid
Section titled “discard_until_valid”size_t discard_until_valid()Discard invalid data until valid header found or buffer empty.
Use this to recover from protocol errors or corrupted data. Scans for PROTOCOL_MAGIC and discards data before it.
Returns: size_t
write_ptr
Section titled “write_ptr”uint8_t * write_ptr()Get writable pointer for direct recv() into buffer.
Use withto recv() directly into buffer:
Returns: uint8_t *
advance_write
Section titled “advance_write”void advance_write(size_t size)Advance write position after direct write.
sizeNumber of bytes writtenparam
Parameters:
size(size_t)
Methods
Section titled “Methods”capacity
Section titled “capacity”constexpr size_t capacity()Get buffer capacity.
Total buffer sizereturn
Returns: constexpr size_t