mirror of
https://github.com/postgresml/pgcat.git
synced 2026-03-26 18:36:28 +00:00
extended
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user