This commit is contained in:
Lev Kokotov
2022-02-03 15:33:26 -08:00
parent c7c724d751
commit f921966e2b
2 changed files with 30 additions and 0 deletions

View File

@@ -13,6 +13,7 @@ use crate::server::Server;
pub struct Client { pub struct Client {
read: BufReader<OwnedReadHalf>, read: BufReader<OwnedReadHalf>,
write: OwnedWriteHalf, write: OwnedWriteHalf,
buffer: BytesMut,
} }
impl Client { impl Client {
@@ -57,6 +58,7 @@ impl Client {
return Ok(Client { return Ok(Client {
read: BufReader::new(read), read: BufReader::new(read),
write: write, write: write,
buffer: BytesMut::with_capacity(8196),
}); });
} }
@@ -86,6 +88,33 @@ impl Client {
return Ok(()); return Ok(());
} }
'P' => {
// Extended protocol, let's buffer most of it
self.buffer.put(&original[..]);
}
'B' => {
self.buffer.put(&original[..]);
}
'D' => {
self.buffer.put(&original[..]);
}
'E' => {
self.buffer.put(&original[..]);
}
'S' => {
// Extended protocol, client requests sync
self.buffer.put(&original[..]);
server.send(self.buffer.clone()).await?;
self.buffer.clear();
let response = server.recv().await?;
write_all_half(&mut self.write, response).await?;
}
_ => { _ => {
println!(">>> Unexpected code: {}", code); println!(">>> Unexpected code: {}", code);
} }

View File

@@ -135,6 +135,7 @@ impl Server {
self.buffer.put(&message[..]); self.buffer.put(&message[..]);
let code = message.get_u8() as char; let code = message.get_u8() as char;
match code { match code {
'Z' => { 'Z' => {
// Ready for query, time to forward buffer to client. // Ready for query, time to forward buffer to client.