Skip to main content

WlpEndpoint

Struct WlpEndpoint 

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

WLP-Endpoint — Writer + Reader fuer DCPSParticipantMessage.

Owner ist die crate::runtime::DcpsRuntime. Der Endpoint wird unter dem Lock der Runtime mutiert; alle Methoden nehmen &mut self.

Implementations§

Source§

impl WlpEndpoint

Source

pub fn new( own_prefix: GuidPrefix, vendor_id: VendorId, tick_period: Duration, ) -> Self

Konstruktor.

§Panics

Nicht — tick_period == ZERO ist erlaubt (deaktiviert AUTOMATIC-Beats).

Source

pub fn set_tick_period(&mut self, period: Duration)

Setzt eine neue Tick-Periode (z.B. nach Lease-Aenderung). Setzt den naechsten Beat-Slot zurueck auf “sofort”, damit eine Kuerzung der Periode unmittelbar wirkt (sonst wartet der Endpoint noch das alte Intervall ab).

Source

pub fn assert_participant(&mut self)

assert_liveliness() auf dem DomainParticipant — enqueued einen Manual-By-Participant-Pulse, der beim naechsten tick() als WLP-DATA rausgeht. Idempotent ueber den Tick-Slot — Mehrfachaufruf binnen einer Tick-Periode fuehrt zu mehreren Pulses (Spec sagt nichts ueber Coalescing, aber wir cappen mit MAX_QUEUED_PULSES).

Source

pub fn assert_topic(&mut self, topic_token: Vec<u8>)

assert_liveliness() auf einem DataWriter — enqueued einen MANUAL_BY_TOPIC-Pulse mit dem gegebenen Topic-Token. Spec-Compliance: ZeroDDS-Vendor-Kind, Cyclone ignoriert das (MSB-set → “ignore unknown kind”, §9.6.3.1).

Source

pub fn tick(&mut self, now: Duration) -> Result<Option<Vec<u8>>, WireError>

Tick. Liefert ggf. ein Datagram, das gesendet werden soll. Reihenfolge:

  1. Pending Manual-Pulses werden zuerst ausgesendet (einer pro Tick — bei voller Queue dauert die Drainage n * tick_period).
  2. Wenn now >= next_tick und tick_period > 0, sendet einen AUTOMATIC-Heartbeat und schedule den naechsten Tick.

None heisst: nichts zu senden in diesem Tick.

§Errors

WireError wenn das Encoding fehlschlaegt (z.B. SN-Overflow).

Source

pub fn handle_datagram( &mut self, bytes: &[u8], now: Duration, ) -> Result<bool, WireError>

Verarbeitet ein eingehendes Datagram. Wenn es eine WLP-DATA- Submessage enthaelt (writer_id == BUILTIN_PARTICIPANT_MESSAGE_ WRITER), wird der Per-Peer-Last-Seen-Timestamp aktualisiert. Andere Datagramme werden ignoriert.

§Errors

WireError wenn das aeussere Datagram malformed ist. Eine einzelne malformed Submessage fuehrt nicht zum Fehler — wir skippen sie still.

Source

pub fn peer_state(&self, prefix: &GuidPrefix) -> Option<&PeerLivelinessState>

Liefert den aktuellen Liveliness-State eines bekannten Peers. None wenn unbekannt.

Source

pub fn peer_count(&self) -> usize

Anzahl getrackter Peers.

Source

pub fn lost_peers( &self, now: Duration, lease: Duration, ) -> impl Iterator<Item = (&GuidPrefix, &PeerLivelinessState)> + '_

Iter ueber alle Peers, deren Last-Seen aelter als now - lease ist. Caller nutzt das, um Liveliness-Lost-Events zu treiben.

Source

pub fn forget_peer(&mut self, prefix: &GuidPrefix)

Entfernt einen Peer aus dem Tracking (z.B. bei SPDP-Lease- Expire).

Trait Implementations§

Source§

impl Debug for WlpEndpoint

Source§

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

Formats the value using the given formatter. Read more

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> 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, 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.