mirror of
https://github.com/launchbadge/sqlx.git
synced 2025-12-29 21:00:54 +00:00
postgres: peek at header then take whole message
This commit is contained in:
parent
499bc33e41
commit
902114b756
@ -53,13 +53,14 @@ macro_rules! read_packet {
|
||||
loop {
|
||||
read_packet!($(@$blocking)? @stream $self, 0, 5);
|
||||
|
||||
let mut header: Bytes = $self.stream.take(5);
|
||||
// peek at the messaage type and payload size
|
||||
let r#type = MessageType::try_from(*$self.stream.get(0,1))?;
|
||||
let size = (u32::from_le_bytes($self.stream.get(1,4)) - 4) as usize;
|
||||
|
||||
let r#type = MessageType::try_from(header.get_u8())?;
|
||||
let size = (header.get_u32() - 4) as usize;
|
||||
|
||||
read_packet!($(@$blocking)? @stream $self, 4, size);
|
||||
read_packet!($(@$blocking)? @stream $self, 5, size);
|
||||
|
||||
// take the whole packet
|
||||
let header = $self.stream.take(5);
|
||||
let contents = $self.stream.take(size);
|
||||
|
||||
let message = Message { r#type, contents };
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user