1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
use crate::connections::Connection;
use once_cell::sync::OnceCell;
use tokio::sync::oneshot;
use std::io;
mod disconnect;
mod handshake;
mod reading;
mod writing;
pub use disconnect::{Disconnect, DisconnectHandler};
pub use handshake::{Handshake, HandshakeHandler};
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(crate) disconnect_handler: OnceCell<DisconnectHandler>,
}
pub type ReturnableItem<T, U> = (T, oneshot::Sender<U>);
pub(crate) type ReturnableConnection = ReturnableItem<Connection, io::Result<Connection>>;