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}