Struct s2n_quic_core::packet::number::PacketNumber
source · [−]pub struct PacketNumber(_);Expand description
Contains a fully-decoded packet number in a given space
Internally the packet number is represented as a NonZeroU64
to ensure optimal memory layout.
The lower 62 bits are used to store the actual packet number value.
The upper 2 bits are used to store the packet number space. Because
there are only 3 spaces, the zero state is never used, which is why
NonZeroU64 can be used instead of u64.
Implementations
sourceimpl PacketNumber
impl PacketNumber
sourcepub fn space(self) -> PacketNumberSpace
pub fn space(self) -> PacketNumberSpace
Returns the PacketNumberSpace for the given PacketNumber
sourcepub const fn as_varint(packet_number: Self) -> VarInt
pub const fn as_varint(packet_number: Self) -> VarInt
Converts the PacketNumber into a VarInt value.
Note: Even though some scenarios require this function, it should be
avoided in most cases, as it removes the corresponding PacketNumberSpace
and allows math operations to be performed, which can easily result in
protocol errors.
sourcepub fn truncate(
self,
largest_acknowledged_packet_number: Self
) -> Option<TruncatedPacketNumber>
pub fn truncate(
self,
largest_acknowledged_packet_number: Self
) -> Option<TruncatedPacketNumber>
Truncates the PacketNumber into a TruncatedPacketNumber based on
the largest acknowledged packet number
sourcepub fn next(self) -> Option<Self>
pub fn next(self) -> Option<Self>
Compute the next packet number in the space. If the packet number has
exceeded the maximum value allowed None will be returned.
sourcepub fn prev(self) -> Option<Self>
pub fn prev(self) -> Option<Self>
Compute the prev packet number in the space. If the packet number has
underflowed None will be returned.
sourcepub const fn as_crypto_nonce(self) -> u64
pub const fn as_crypto_nonce(self) -> u64
Create a nonce for crypto from the packet number value
Note: This should not be used by anything other than crypto-related functionality.
sourcepub fn checked_distance(self, rhs: PacketNumber) -> Option<u64>
pub fn checked_distance(self, rhs: PacketNumber) -> Option<u64>
Computes the distance between this packet number and the given packet number, returning None if overflow occurred.
Trait Implementations
sourceimpl Clone for PacketNumber
impl Clone for PacketNumber
sourcefn clone(&self) -> PacketNumber
fn clone(&self) -> PacketNumber
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source. Read more
sourceimpl Debug for PacketNumber
impl Debug for PacketNumber
sourceimpl Default for PacketNumber
impl Default for PacketNumber
sourceimpl Display for PacketNumber
impl Display for PacketNumber
sourceimpl Hash for PacketNumber
impl Hash for PacketNumber
sourceimpl IntoEvent<u64> for PacketNumber
impl IntoEvent<u64> for PacketNumber
fn into_event(self) -> u64
sourceimpl Ord for PacketNumber
impl Ord for PacketNumber
sourceimpl PartialEq<PacketNumber> for PacketNumber
impl PartialEq<PacketNumber> for PacketNumber
sourceimpl PartialOrd<PacketNumber> for PacketNumber
impl PartialOrd<PacketNumber> for PacketNumber
sourcefn partial_cmp(&self, other: &Self) -> Option<Ordering>
fn partial_cmp(&self, other: &Self) -> Option<Ordering>
This method returns an ordering between self and other values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self and other) and is used by the <=
operator. Read more
sourceimpl Set for PacketNumber
impl Set for PacketNumber
sourcefn contains(&self, packet_number: PacketNumber) -> bool
fn contains(&self, packet_number: PacketNumber) -> bool
Returns whether the Set contains a given packet number
sourcefn smallest(&self) -> PacketNumber
fn smallest(&self) -> PacketNumber
Smallest packet number in the set
sourcefn largest(&self) -> PacketNumber
fn largest(&self) -> PacketNumber
Largest packet number in the set
sourcefn as_range(&self) -> PacketNumberRangeⓘNotable traits for PacketNumberRangeimpl Iterator for PacketNumberRange type Item = PacketNumber;
fn as_range(&self) -> PacketNumberRangeⓘNotable traits for PacketNumberRangeimpl Iterator for PacketNumberRange type Item = PacketNumber;
Returns the range of packet numbers contained in the set
impl Copy for PacketNumber
impl Eq for PacketNumber
impl StructuralEq for PacketNumber
Auto Trait Implementations
impl RefUnwindSafe for PacketNumber
impl Send for PacketNumber
impl Sync for PacketNumber
impl Unpin for PacketNumber
impl UnwindSafe for PacketNumber
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more