use crate::connections::Connection;
use once_cell::sync::OnceCell;
use tokio::sync::oneshot;
use std::io;
mod handshaking;
mod reading;
mod writing;
pub use handshaking::{HandshakeHandler, Handshaking};
pub use reading::{Reading, ReadingHandler};
pub use writing::{Writing, WritingHandler};
#[derive(Default)]
pub(crate) struct Protocols {
pub(crate) handshake_handler: OnceCell<HandshakeHandler>,
pub(crate) reading_handler: OnceCell<ReadingHandler>,
pub(crate) writing_handler: OnceCell<WritingHandler>,
}
pub type ReturnableConnection = (Connection, oneshot::Sender<io::Result<Connection>>);