Skip to main content

AckFrame

Struct AckFrame 

Source
pub struct AckFrame { /* private fields */ }
Expand description

ACK Frame

ACK Frame {
  Type (i) = 0x02..0x03,
  Largest Acknowledged (i),
  ACK Delay (i),
  ACK Range Count (i),
  First ACK Range (i),
  ACK Range (..) ...,
  [ECN Counts (..)],
}

Receiver sends ACK frames (types 0x02 and 0x03) to inform the sender of packets they have received and processed. The ACK frame contains one or more ACK Ranges.

See ack frames of QUIC RFC 9000.

The ACK Range Count is not included in the struct because it is an intermediate variable. It can be obtained from the ranges when writing and is no longer needed after generating the ranges when parsing.

Implementations§

Source§

impl AckFrame

Source

pub fn new( largest: VarInt, delay: VarInt, first_range: VarInt, ranges: Vec<(VarInt, VarInt)>, ecn: Option<EcnCounts>, ) -> Self

Create a new AckFrame.

Source

pub fn largest(&self) -> u64

Return the largest acknowledged packet number.

Source

pub fn delay(&self) -> u64

Return the delay in microseconds.

Source

pub fn first_range(&self) -> u64

Return the first range.

Source

pub fn ranges(&self) -> &Vec<(VarInt, VarInt)>

Return the ranges.

Source

pub fn ecn(&self) -> Option<EcnCounts>

Return the ECN (Explicit Congestion Notification) counter.

Source

pub fn set_ecn(&mut self, ecn: EcnCounts)

Set the value of the ECN (Explicit Congestion Notification) counter

Source

pub fn take_ecn(&mut self) -> Option<EcnCounts>

Take the value of the ECN (Explicit Congestion Notification) counter

Source

pub fn iter(&self) -> impl Iterator<Item = RangeInclusive<u64>> + '_

Iterate through the sequence numbers of the packets acknowledged by the iterative ACK frame, starting from the largest and going down.

Trait Implementations§

Source§

impl Clone for AckFrame

Source§

fn clone(&self) -> AckFrame

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for AckFrame

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl EncodeSize for AckFrame

Source§

fn max_encoding_size(&self) -> usize

Return the max number of bytes needed to encode this value Read more
Source§

fn encoding_size(&self) -> usize

Return the exact number of bytes needed to encode this value
Source§

impl Eq for AckFrame

Source§

impl<D> From<AckFrame> for Frame<D>

Source§

fn from(value: AckFrame) -> Self

Converts to this type from the input type.
Source§

impl GetFrameType for AckFrame

Source§

fn frame_type(&self) -> FrameType

Return the type of frame
Source§

impl<Target> Package<Target> for AckFrame
where Target: BufMut + RecordFrame<Frame<NonData>, NonData> + ?Sized,

Source§

impl<Target> Package<Target> for &AckFrame
where Target: BufMut + RecordFrame<Frame<NonData>, NonData> + ?Sized,

Source§

impl PartialEq for AckFrame

Source§

fn eq(&self, other: &AckFrame) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for AckFrame

Source§

impl<D> TryFrom<Frame<D>> for AckFrame

Source§

type Error = TryIntoError<Frame<D>>

The type returned in the event of a conversion error.
Source§

fn try_from(value: Frame<D>) -> Result<Self, TryIntoError<Frame<D>>>

Performs the conversion.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> FrameFeature for T
where T: GetFrameType,

Source§

fn belongs_to(&self, packet_type: Type) -> bool

Return whether a frame type belongs to the given packet_type
Source§

fn specs(&self) -> u8

Return the specs of the frame type
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> WriteFrame<AckFrame> for T
where T: BufMut,

Source§

fn put_frame(&mut self, frame: &AckFrame)

Write a frame to the buffer.