pub struct SequenceNumberSet {
pub bitmap_base: SequenceNumber,
pub num_bits: u32,
pub bitmap: Vec<u32>,
}Expand description
Bitset von Sequence-Numbers ab bitmap_base. Wird in HEARTBEAT/
ACKNACK/GAP genutzt, um Mengen verlorener oder bekannter Pakete zu
signalisieren.
Wire-Layout (variable Laenge): bitmapBase: 8 Byte (SequenceNumber, big oder little gemaess Header) numBits: 4 Byte (u32) bitmap: ceil(numBits/32) * 4 Byte (u32-Words)
Fields§
§bitmap_base: SequenceNumberErste Sequence-Number, fuer die das erste Bit zustaendig ist.
num_bits: u32Anzahl gueltiger Bits.
bitmap: Vec<u32>ceil(num_bits/32) u32-Worte.
Implementations§
Source§impl SequenceNumberSet
impl SequenceNumberSet
Sourcepub fn wire_size(num_bits: u32) -> usize
pub fn wire_size(num_bits: u32) -> usize
Berechnet die Wire-Size in Bytes basierend auf num_bits.
Sourcepub fn from_missing(base: SequenceNumber, missing: &[SequenceNumber]) -> Self
pub fn from_missing(base: SequenceNumber, missing: &[SequenceNumber]) -> Self
Baut ein SequenceNumberSet aus einer sortierten Liste fehlender SNs.
base ist die kleinste noch nicht acked SN (der AckNack-Base).
missing muss aufsteigend sortiert und alle SNs ≥ base sein.
Bits werden in RTPS-Konvention gesetzt: Bit 0 ist das hoechstwertige
Bit (MSB) von bitmap[0].
Sourcepub fn iter_set(&self) -> impl Iterator<Item = SequenceNumber> + '_
pub fn iter_set(&self) -> impl Iterator<Item = SequenceNumber> + '_
Iteriert ueber alle SNs, deren Bit gesetzt ist.
Sourcepub fn encoded_size(&self) -> usize
pub fn encoded_size(&self) -> usize
Tatsaechliche Wire-Size dieses Sets.
Trait Implementations§
Source§impl Clone for SequenceNumberSet
impl Clone for SequenceNumberSet
Source§fn clone(&self) -> SequenceNumberSet
fn clone(&self) -> SequenceNumberSet
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SequenceNumberSet
impl Debug for SequenceNumberSet
Source§impl PartialEq for SequenceNumberSet
impl PartialEq for SequenceNumberSet
Source§fn eq(&self, other: &SequenceNumberSet) -> bool
fn eq(&self, other: &SequenceNumberSet) -> bool
self and other values to be equal, and is used by ==.