Skip to main content

dope_session/
codec.rs

1pub trait Codec: 'static {
2    type ConnState: Default + 'static;
3
4    const IS_PLAIN: bool = false;
5
6    #[inline(always)]
7    fn is_active(_state: &Self::ConnState) -> bool {
8        true
9    }
10
11    #[inline(always)]
12    fn process_inbound(_state: &mut Self::ConnState, _wire_in: &[u8]) -> usize {
13        unreachable!("Codec::process_inbound on IS_PLAIN codec")
14    }
15
16    #[inline(always)]
17    fn take_plaintext(_state: &mut Self::ConnState) -> Vec<u8> {
18        unreachable!("Codec::take_plaintext on IS_PLAIN codec")
19    }
20
21    #[inline(always)]
22    fn install_plaintext(_state: &mut Self::ConnState, _plaintext: Vec<u8>) {
23        unreachable!("Codec::install_plaintext on IS_PLAIN codec")
24    }
25
26    #[inline(always)]
27    fn process_outbound(_state: &mut Self::ConnState, _plaintext_in: &[u8]) {
28        unreachable!("Codec::process_outbound on IS_PLAIN codec")
29    }
30
31    #[inline(always)]
32    fn wire_slice(_state: &Self::ConnState) -> &[u8] {
33        &[]
34    }
35
36    #[inline(always)]
37    fn take_inflight(_state: &mut Self::ConnState) -> Option<(*const u8, u32)> {
38        unreachable!("Codec::take_inflight on IS_PLAIN codec")
39    }
40
41    #[inline(always)]
42    fn consume_inflight(_state: &mut Self::ConnState, _n: usize) -> bool {
43        unreachable!("Codec::consume_inflight on IS_PLAIN codec")
44    }
45
46    #[inline(always)]
47    fn has_inflight(_state: &Self::ConnState) -> bool {
48        false
49    }
50
51    #[inline(always)]
52    fn close_pending(_state: &Self::ConnState) -> bool {
53        false
54    }
55}
56
57pub struct Plain;
58
59impl Codec for Plain {
60    type ConnState = ();
61    const IS_PLAIN: bool = true;
62}