zero_postgres/
buffer_set.rs

1//! Buffer set for state machine operations.
2
3/// Buffer set for state machine operations.
4pub struct BufferSet {
5    /// Read buffer for incoming messages
6    pub read_buffer: Vec<u8>,
7    /// Write buffer for outgoing messages
8    pub write_buffer: Vec<u8>,
9    /// Column buffer for storing RowDescription payload
10    pub column_buffer: Vec<u8>,
11    /// Type byte of the last message read
12    pub type_byte: u8,
13}
14
15impl BufferSet {
16    /// Create a new buffer set.
17    pub fn new() -> Self {
18        Self {
19            read_buffer: Vec::with_capacity(8192),
20            write_buffer: Vec::with_capacity(8192),
21            column_buffer: Vec::with_capacity(512),
22            type_byte: 0,
23        }
24    }
25
26    /// Copy read_buffer to column_buffer.
27    pub fn save_column_buffer(&mut self) {
28        self.column_buffer.clear();
29        self.column_buffer.extend_from_slice(&self.read_buffer);
30    }
31}
32
33impl Default for BufferSet {
34    fn default() -> Self {
35        Self::new()
36    }
37}