pub trait Codec: 'static {
type ConnState: Default + 'static;
const IS_PLAIN: bool = false;
#[inline(always)]
fn is_active(_state: &Self::ConnState) -> bool {
true
}
#[inline(always)]
fn process_inbound(_state: &mut Self::ConnState, _wire_in: &[u8]) -> usize {
unreachable!("Codec::process_inbound on IS_PLAIN codec")
}
#[inline(always)]
fn take_plaintext(_state: &mut Self::ConnState) -> Vec<u8> {
unreachable!("Codec::take_plaintext on IS_PLAIN codec")
}
#[inline(always)]
fn install_plaintext(_state: &mut Self::ConnState, _plaintext: Vec<u8>) {
unreachable!("Codec::install_plaintext on IS_PLAIN codec")
}
#[inline(always)]
fn process_outbound(_state: &mut Self::ConnState, _plaintext_in: &[u8]) {
unreachable!("Codec::process_outbound on IS_PLAIN codec")
}
#[inline(always)]
fn wire_slice(_state: &Self::ConnState) -> &[u8] {
&[]
}
#[inline(always)]
fn take_inflight(_state: &mut Self::ConnState) -> Option<(*const u8, u32)> {
unreachable!("Codec::take_inflight on IS_PLAIN codec")
}
#[inline(always)]
fn consume_inflight(_state: &mut Self::ConnState, _n: usize) -> bool {
unreachable!("Codec::consume_inflight on IS_PLAIN codec")
}
#[inline(always)]
fn has_inflight(_state: &Self::ConnState) -> bool {
false
}
#[inline(always)]
fn close_pending(_state: &Self::ConnState) -> bool {
false
}
}
pub struct Plain;
impl Codec for Plain {
type ConnState = ();
const IS_PLAIN: bool = true;
}