dope_session/protocol/
client.rs1use 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}