pub struct ReaderProxy {
pub remote_reader_guid: Guid,
pub unicast_locators: Vec<Locator>,
pub multicast_locators: Vec<Locator>,
pub is_reliable: bool,
/* private fields */
}Expand description
Writer-seitiger State fuer einen Remote-Reader.
Fields§
§remote_reader_guid: GuidGUID des Remote-Reader-Endpoints.
unicast_locators: Vec<Locator>Unicast-Empfangs-Locator(s) des Readers.
multicast_locators: Vec<Locator>Multicast-Empfangs-Locator(s).
is_reliable: boolReliable-Kind (immer true in WP 1.1).
Implementations§
Source§impl ReaderProxy
impl ReaderProxy
Sourcepub fn new(
remote_reader_guid: Guid,
unicast_locators: Vec<Locator>,
multicast_locators: Vec<Locator>,
is_reliable: bool,
) -> Self
pub fn new( remote_reader_guid: Guid, unicast_locators: Vec<Locator>, multicast_locators: Vec<Locator>, is_reliable: bool, ) -> Self
Erzeugt einen frischen Proxy.
Sourcepub fn set_negotiated_data_representation(&mut self, id: i16)
pub fn set_negotiated_data_representation(&mut self, id: i16)
Setzt das ausgehandelte Wire-Format fuer diesen Reader.
Wird vom DCPS-SEDP-Match-Pfad nach negotiate(...) aufgerufen.
Sourcepub fn negotiated_data_representation(&self) -> i16
pub fn negotiated_data_representation(&self) -> i16
Liefert das ausgehandelte Wire-Format.
Sourcepub fn note_activity(&mut self, now: Duration)
pub fn note_activity(&mut self, now: Duration)
Spec §8.4.15.6 — markiert eingehende Reader-Aktivitaet (jeder ACKNACK / NACK_FRAG ruft das aus dem Receiver-Pfad).
Sourcepub fn is_inactive(&self, now: Duration, threshold: Duration) -> bool
pub fn is_inactive(&self, now: Duration, threshold: Duration) -> bool
Spec §8.4.15.6 — true wenn der Reader laenger als threshold
keine Aktivitaet gezeigt hat. Caller (z.B. ReliableWriter)
nutzt das, um den Proxy aus der matched_readers-Liste zu
reclaimen, sodass Strict-Reliability nicht den Cache OOM
laufen laesst.
Sourcepub fn last_activity(&self) -> Duration
pub fn last_activity(&self) -> Duration
Liefert den Last-Activity-Zeitpunkt (Diagnose).
Sourcepub fn skip_samples_up_to(&mut self, sn: SequenceNumber)
pub fn skip_samples_up_to(&mut self, sn: SequenceNumber)
Markiert Samples bis zu und einschliesslich sn als “nicht
mehr relevant” fuer diesen Proxy — sowohl gesendet als auch
acked. Wird z.B. bei Volatile-Durability aufgerufen, wenn ein
neuer Reader-Proxy hinzukommt: der soll keine Historic-Samples
bekommen, also springen wir direkt auf den aktuellen Cache-
Stand.
Spec-Bezug: OMG DDS 1.4 §2.2.3.4 DurabilityQosPolicy Volatile: “The Service will not attempt to retain old data beyond what is currently held by the DataWriter for live Readers”.
Sourcepub fn acked_changes_set(&mut self, base: SequenceNumber)
pub fn acked_changes_set(&mut self, base: SequenceNumber)
Aktualisiert auf ACKNACK-Base — Reader hat alle SNs < base acked.
base entspricht reader_sn_state.bitmap_base.
Sourcepub fn requested_changes_set(
&mut self,
sns: impl IntoIterator<Item = SequenceNumber>,
)
pub fn requested_changes_set( &mut self, sns: impl IntoIterator<Item = SequenceNumber>, )
Merkt sich die im ACKNACK-Bitmap angefragten SNs fuer Re-Send.
Sourcepub fn next_requested_change(&mut self) -> Option<SequenceNumber>
pub fn next_requested_change(&mut self) -> Option<SequenceNumber>
Zieht die kleinste offene Requested-SN und entfernt sie.
Sourcepub fn next_unsent_change(
&mut self,
cache_max: SequenceNumber,
) -> Option<SequenceNumber>
pub fn next_unsent_change( &mut self, cache_max: SequenceNumber, ) -> Option<SequenceNumber>
Liefert die naechste noch nicht gesendete SN, falls im Cache vorhanden.
cache_max ist die groesste SN, die aktuell im Writer-Cache liegt.
Sourcepub fn unacked_changes(&self, cache_max: SequenceNumber) -> bool
pub fn unacked_changes(&self, cache_max: SequenceNumber) -> bool
True wenn zwischen highest_acked und cache_max noch unbestaetigte
Samples liegen.
Sourcepub fn highest_acked_sn(&self) -> SequenceNumber
pub fn highest_acked_sn(&self) -> SequenceNumber
Getter fuer highest_acked_sn.
Sourcepub fn highest_sent_sn(&self) -> SequenceNumber
pub fn highest_sent_sn(&self) -> SequenceNumber
Getter fuer highest_sent_sn.
Sourcepub fn pending_requested_count(&self) -> usize
pub fn pending_requested_count(&self) -> usize
Anzahl vorgemerkter Resend-Requests.
Sourcepub fn requested_fragments_set(
&mut self,
sn: SequenceNumber,
fragments: impl IntoIterator<Item = FragmentNumber>,
)
pub fn requested_fragments_set( &mut self, sn: SequenceNumber, fragments: impl IntoIterator<Item = FragmentNumber>, )
Merkt sich Fragment-granulare Resend-Requests aus einem NACK_FRAG.
SN-Werte ≤ highest_acked_sn werden ignoriert.
Sourcepub fn next_requested_fragment(
&mut self,
) -> Option<(SequenceNumber, FragmentNumber)>
pub fn next_requested_fragment( &mut self, ) -> Option<(SequenceNumber, FragmentNumber)>
Zieht das kleinste offene (SN, FragmentNumber)-Paar und entfernt es.
Sourcepub fn pending_requested_fragment_count(&self) -> usize
pub fn pending_requested_fragment_count(&self) -> usize
Anzahl vorgemerkter Fragment-Resends (Summe ueber alle SNs).
Trait Implementations§
Source§impl Clone for ReaderProxy
impl Clone for ReaderProxy
Source§fn clone(&self) -> ReaderProxy
fn clone(&self) -> ReaderProxy
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more