PacketEncoder

Trait PacketEncoder 

Source
pub trait PacketEncoder<K: CryptoKey, H: HeaderKey, Payload: PacketPayloadEncoder>: Sized {
    type PayloadLenCursor: PacketPayloadLenCursor;

    // Required methods
    fn encode_header<E: Encoder>(
        &self,
        packet_number_len: PacketNumberLen,
        encoder: &mut E,
    );
    fn payload(&mut self) -> &mut Payload;
    fn packet_number(&self) -> PacketNumber;

    // Provided method
    fn encode_packet<'a>(
        self,
        key: &mut K,
        header_key: &H,
        largest_acknowledged_packet_number: PacketNumber,
        min_packet_len: Option<usize>,
        buffer: EncoderBuffer<'a>,
    ) -> Result<(ProtectedPayload<'a>, EncoderBuffer<'a>), PacketEncodingError<'a>> { ... }
}

Required Associated Types§

Required Methods§

Source

fn encode_header<E: Encoder>( &self, packet_number_len: PacketNumberLen, encoder: &mut E, )

Encodes the current packet’s header into the provided encoder

Source

fn payload(&mut self) -> &mut Payload

Returns the payload for the current packet

Source

fn packet_number(&self) -> PacketNumber

Returns the packet number for the current packet

Provided Methods§

Source

fn encode_packet<'a>( self, key: &mut K, header_key: &H, largest_acknowledged_packet_number: PacketNumber, min_packet_len: Option<usize>, buffer: EncoderBuffer<'a>, ) -> Result<(ProtectedPayload<'a>, EncoderBuffer<'a>), PacketEncodingError<'a>>

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<DCID: EncoderValue, Payload: PacketPayloadEncoder, K: OneRttKey, H: OneRttHeaderKey> PacketEncoder<K, H, Payload> for Short<DCID, KeyPhase, PacketNumber, Payload>

Source§

impl<DCID: EncoderValue, SCID: EncoderValue, Payload: PacketPayloadEncoder, K: HandshakeKey, H: HandshakeHeaderKey> PacketEncoder<K, H, Payload> for Handshake<DCID, SCID, PacketNumber, Payload>

Source§

type PayloadLenCursor = LongPayloadLenCursor

Source§

impl<DCID: EncoderValue, SCID: EncoderValue, Payload: PacketPayloadEncoder, K: ZeroRttKey, H: ZeroRttHeaderKey> PacketEncoder<K, H, Payload> for ZeroRtt<DCID, SCID, PacketNumber, Payload>

Source§

type PayloadLenCursor = LongPayloadLenCursor

Source§

impl<DCID: EncoderValue, SCID: EncoderValue, Token: EncoderValue, Payload: PacketPayloadEncoder, K: InitialKey, H: InitialHeaderKey> PacketEncoder<K, H, Payload> for Initial<DCID, SCID, Token, PacketNumber, Payload>

Source§

type PayloadLenCursor = LongPayloadLenCursor