From f921966e2b8392e9f0e20b7bc1c15cb8a4bbfce7 Mon Sep 17 00:00:00 2001 From: Lev Kokotov Date: Thu, 3 Feb 2022 15:33:26 -0800 Subject: [PATCH] extended --- src/client.rs | 29 +++++++++++++++++++++++++++++ src/server.rs | 1 + 2 files changed, 30 insertions(+) diff --git a/src/client.rs b/src/client.rs index 6cebeea..03a523c 100644 --- a/src/client.rs +++ b/src/client.rs @@ -13,6 +13,7 @@ use crate::server::Server; pub struct Client { read: BufReader, write: OwnedWriteHalf, + buffer: BytesMut, } impl Client { @@ -57,6 +58,7 @@ impl Client { return Ok(Client { read: BufReader::new(read), write: write, + buffer: BytesMut::with_capacity(8196), }); } @@ -86,6 +88,33 @@ impl Client { 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); } diff --git a/src/server.rs b/src/server.rs index 6023e10..1e7059d 100644 --- a/src/server.rs +++ b/src/server.rs @@ -135,6 +135,7 @@ impl Server { self.buffer.put(&message[..]); let code = message.get_u8() as char; + match code { 'Z' => { // Ready for query, time to forward buffer to client.