antarc-protocol 0.1.0

Antarc custom procotol
use core::mem;
use std::marker::PhantomData;

use crate::{
    packets::{Ack},
    sequence::Sequence,
    ProtocolId,
};

#[derive(Debug, PartialEq, Clone, Eq, Hash, PartialOrd)]
pub struct HeaderInfo {
    pub sequence: Sequence,
    pub ack: Ack,
    pub past_acks: u16,
    pub status_code: StatusCode,
    pub payload_length: u16,
}


#[derive(Debug, PartialEq, Clone, Eq, Hash, PartialOrd)]
pub struct Header<Kind> {
    pub info: HeaderInfo,
    pub marker: PhantomData<Kind>,
}

pub const ENCODED_SIZE: usize = mem::size_of::<Sequence>()
    + mem::size_of::<Ack>()
    + mem::size_of::<u16>()
    + mem::size_of::<StatusCode>()
    + mem::size_of::<u16>()
    + mem::size_of::<ProtocolId>();