Skip to main content

HeaderExtension

Struct HeaderExtension 

Source
pub struct HeaderExtension {
    pub little_endian: bool,
    pub message_length: Option<u32>,
    pub timestamp: Option<HeTimestamp>,
    pub uextension4: Option<[u8; 4]>,
    pub wextension8: Option<[u8; 8]>,
    pub checksum: ChecksumValue,
    pub parameters: Option<ParameterList>,
}
Expand description

Geparste HeaderExtension-Submessage.

Fields§

§little_endian: bool

Endianness des Bodies (true = Little-Endian).

§message_length: Option<u32>

Falls L-Flag gesetzt: Restlaenge der Message.

§timestamp: Option<HeTimestamp>

Falls W-Flag gesetzt: Sender-Timestamp.

§uextension4: Option<[u8; 4]>

Falls U-Flag gesetzt: 4-Byte vendor-spezifischer Wert.

§wextension8: Option<[u8; 8]>

Falls V-Flag gesetzt: 16-Byte vendor-spezifischer Wert.

§checksum: ChecksumValue

Falls C-Flag != 0: Checksum-Wert.

§parameters: Option<ParameterList>

Falls P-Flag gesetzt: ParameterList.

Implementations§

Source§

impl HeaderExtension

Source

pub fn new() -> Self

Leerer HE (alle optionalen Felder absent). Ueber den Builder- Stil der Felder direkt manipulieren.

Source

pub fn flag_byte(&self) -> u8

Berechnet das Flag-Byte (inkl. E-Bit) aus den gesetzten Feldern.

Source

pub fn encode_body(&self) -> Result<Vec<u8>, WireError>

Encoded den Body ohne Submessage-Header. Body-Laenge ist per Konstruktion ≤ MAX_HE_LENGTH.

Reihenfolge: L → W → U → V → C → P, gem. Spec §9.4.5.2.

§Errors

ValueOutOfRange wenn der Body > u16::MAX oder

MAX_HE_LENGTH waere.

Source

pub fn encode(&self) -> Result<Vec<u8>, WireError>

Encoded HE als komplettes Submessage = 4-Byte SubmessageHeader

  • Body. octets_to_next_header wird auf Body-Laenge gesetzt.
§Errors

ValueOutOfRange wenn Body-Laenge > u16::MAX.

Source

pub fn decode_body(body: &[u8], flags: u8) -> Result<Self, WireError>

Decoded den HE-Body aus einem Slice der Laenge octets_to_next_header, gegeben das Flag-Byte aus dem Submessage-Header.

§Errors

UnexpectedEof, ValueOutOfRange (Body groesser MAX_HE_LENGTH).

Source

pub fn decode(bytes: &[u8]) -> Result<Self, WireError>

Decoded eine komplette HE-Submessage (Header + Body) aus bytes. Ueberprueft die SubmessageId.

§Errors

UnexpectedEof, UnknownSubmessageId, ValueOutOfRange.

Source

pub fn validate_message_length( &self, actual_message_length: u32, ) -> Result<(), WireError>

Cross-Check: wenn message_length gesetzt ist, MUSS sie der tatsaechlichen Restlaenge der RTPS-Message ab dem ersten Submessage-Header (also ab Byte 20 = nach RtpsHeader) bis zum Datagram-Ende entsprechen (Spec §8.3.7.4).

actual_message_length ist die vom Receiver gemessene Restlaenge.

§Errors

ValueOutOfRange bei Mismatch.

Trait Implementations§

Source§

impl Clone for HeaderExtension

Source§

fn clone(&self) -> HeaderExtension

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 HeaderExtension

Source§

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

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

impl Default for HeaderExtension

Source§

fn default() -> HeaderExtension

Returns the “default value” for a type. Read more
Source§

impl PartialEq for HeaderExtension

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for HeaderExtension

Source§

impl StructuralPartialEq for HeaderExtension

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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.