fix(proto): flush written startup message

This commit is contained in:
Jindřich Moravec 2023-12-23 01:27:15 +01:00
parent c1744711d3
commit 505f59b354
4 changed files with 14 additions and 7 deletions

View file

@ -1,6 +1,7 @@
use crate::handshake::errors::ClientHandshakeError;
use crate::message::backend::{BackendKeyDataData, BackendMessage, ParameterStatusData};
#[derive(Debug)]
pub struct HandshakeResponse {
pub version: String,
pub process_id: i32,
@ -41,20 +42,22 @@ impl TryFrom<&[BackendMessage]> for HandshakeResponse {
}
match (version, process_id, secret_key) {
(Some(version), Some(process_id), Some(secret_key)) => {
Ok(Self { version, process_id, secret_key })
}
(Some(version), Some(process_id), Some(secret_key)) => Ok(Self {
version,
process_id,
secret_key,
}),
_ => Err(ClientHandshakeError::UnexpectedResponse),
}
}
}
impl From<&HandshakeResponse> for Vec<BackendMessage> {
fn from(response: &HandshakeResponse) -> Self {
impl From<HandshakeResponse> for Vec<BackendMessage> {
fn from(response: HandshakeResponse) -> Self {
vec![
BackendMessage::ParameterStatus(ParameterStatusData {
name: "server_version".into(),
value: response.version.clone().into(),
value: response.version.into(),
}),
BackendMessage::BackendKeyData(BackendKeyDataData {
process: response.process_id,
@ -62,4 +65,4 @@ impl From<&HandshakeResponse> for Vec<BackendMessage> {
}),
]
}
}
}