refactor(proto): reuse code in handshakes

This commit is contained in:
Jindřich Moravec 2023-12-23 00:52:53 +01:00
parent 7b2dce4dfb
commit c1744711d3
9 changed files with 111 additions and 88 deletions

View file

@ -1,14 +1,27 @@
use thiserror::Error;
use tokio::io;
use crate::message::backend::BackendMessage;
use crate::message::errors::ProtoDeserializeError;
use crate::reader::errors::{ProtoConsumeError, ProtoPeekError};
use crate::reader::errors::{ProtoConsumeError, ProtoPeekError, ProtoReadError};
use crate::writer::errors::ProtoWriteError;
#[derive(Debug, Error)]
pub enum ClientHandshakeError {
#[error("unexpected response from server")]
UnexpectedResponse,
#[error("unexpected auth response")]
UnexpectedAuthResponse(BackendMessage),
#[error("writing message to socket failed")]
Write(#[from] ProtoWriteError),
#[error("reading message from socket failed")]
Read(#[from] ProtoReadError),
}
#[derive(Debug, Error)]
pub enum ServerHandshakeError {
#[error("startup message not found")]
MissingStartupMessage,
#[error("reading from socket failed")]
#[error("socket communication failed")]
Io(#[from] io::Error),
#[error("deserialization of inner data failed")]
Deserialize(#[from] ProtoDeserializeError),
@ -18,4 +31,4 @@ pub enum ServerHandshakeError {
Consume(#[from] ProtoConsumeError),
#[error("writing message to socket failed")]
Write(#[from] ProtoWriteError),
}
}