refactor(proto): reuse code in handshakes
This commit is contained in:
parent
7b2dce4dfb
commit
c1744711d3
9 changed files with 111 additions and 88 deletions
|
|
@ -1,6 +1,8 @@
|
|||
use crate::handshake::errors::ServerHandshakeError;
|
||||
use crate::handshake::request::HandshakeRequest;
|
||||
use crate::handshake::response::HandshakeResponse;
|
||||
use crate::message::backend::{
|
||||
AuthenticationOkData, BackendKeyDataData, BackendMessage, ParameterStatusData,
|
||||
AuthenticationOkData, BackendMessage,
|
||||
ReadyForQueryData,
|
||||
};
|
||||
use crate::message::special::{SpecialMessage, StartupMessageData};
|
||||
|
|
@ -11,10 +13,8 @@ use crate::writer::protowriter::ProtoFlush;
|
|||
pub async fn do_server_handshake(
|
||||
writer: &mut (impl BackendProtoWriter + ProtoFlush),
|
||||
reader: &mut impl FrontendProtoReader,
|
||||
name: &str,
|
||||
process: i32,
|
||||
secret: i32,
|
||||
) -> Result<StartupMessageData, ServerHandshakeError> {
|
||||
response: &HandshakeResponse,
|
||||
) -> Result<HandshakeRequest, ServerHandshakeError> {
|
||||
match &reader.peek_special_message().await? {
|
||||
Some(msg @ SpecialMessage::SSLRequest) => {
|
||||
reader.consume_special_message(msg).await?;
|
||||
|
|
@ -40,21 +40,15 @@ pub async fn do_server_handshake(
|
|||
.write_proto(BackendMessage::from(AuthenticationOkData { status: 0 }))
|
||||
.await?;
|
||||
|
||||
writer
|
||||
.write_proto(BackendMessage::from(ParameterStatusData {
|
||||
name: "server_version".to_string().into(),
|
||||
value: format!("16.0 ({name})").into(),
|
||||
}))
|
||||
.await?;
|
||||
|
||||
writer
|
||||
.write_proto(BackendMessage::from(BackendKeyDataData { process, secret }))
|
||||
.await?;
|
||||
let messages: Vec<BackendMessage> = response.into();
|
||||
for message in messages {
|
||||
writer.write_proto(message).await?;
|
||||
}
|
||||
|
||||
writer
|
||||
.write_proto(BackendMessage::from(ReadyForQueryData { status: b'I' }))
|
||||
.await?;
|
||||
|
||||
writer.flush().await?;
|
||||
Ok(startup_message)
|
||||
Ok(startup_message.into())
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue