postgres_proto_rs/messages/
mod.rs

1use std::io::{BufRead, Cursor};
2
3use bytes::BytesMut;
4
5use crate::errors::Error;
6
7trait BytesMutReader {
8    fn read_string(&mut self) -> Result<String, Error>;
9}
10
11impl BytesMutReader for Cursor<&BytesMut> {
12    fn read_string(&mut self) -> Result<String, Error> {
13        let mut buf = vec![];
14        match self.read_until(b'\0', &mut buf) {
15            Ok(_) => {},
16            Err(err) => return Err(Error::IOError(err.to_string())),
17        };
18
19        Ok(String::from_utf8_lossy(&buf[..buf.len() - 1]).to_string())
20    }
21}
22
23pub trait Message {
24    fn new_from_bytes(message_bytes: BytesMut) -> Result<Self, Error>
25    where
26        Self: Sized;
27
28    fn get_bytes(&self) -> &BytesMut;
29}
30
31pub mod backend;
32pub mod frontend;