Skip to main content

dope_session/protocol/
client.rs

1use crate::SlotId;
2use crate::session::Egress;
3use dambi::Bytes;
4
5pub trait ClientFramer: 'static {
6    type Head;
7
8    fn parse(&mut self, buf: &Bytes) -> Option<(Self::Head, usize)>;
9}
10
11pub trait ClientProtocol: 'static {
12    type Framer: ClientFramer + Default + 'static;
13    type ConnState: Default + 'static;
14
15    fn on_connect(&mut self, conn_id: SlotId, conn_state: &mut Self::ConnState, out: Egress<'_>) {
16        let _ = (conn_id, conn_state, out);
17    }
18
19    fn on_response(
20        &mut self,
21        conn_id: SlotId,
22        conn_state: &mut Self::ConnState,
23        head: <Self::Framer as ClientFramer>::Head,
24        out: Egress<'_>,
25    );
26
27    fn wants_close(&self, conn_state: &Self::ConnState) -> bool {
28        let _ = conn_state;
29        false
30    }
31
32    fn on_disconnect(&mut self, conn_id: SlotId, conn_state: &mut Self::ConnState) {
33        let _ = (conn_id, conn_state);
34    }
35}