postgres_proto_rs/messages/
mod.rs1use 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;