pub struct ReliableReader { /* private fields */ }Expand description
Ein Reliable-Reader mit 0..N Writer-Proxies.
Implementations§
Source§impl ReliableReader
impl ReliableReader
Sourcepub fn new(cfg: ReliableReaderConfig) -> Self
pub fn new(cfg: ReliableReaderConfig) -> Self
Sourcepub fn writer_proxies(&self) -> &[WriterProxyState]
pub fn writer_proxies(&self) -> &[WriterProxyState]
Read-only-Slice der Writer-Proxy-States.
Sourcepub fn writer_proxy_count(&self) -> usize
pub fn writer_proxy_count(&self) -> usize
Anzahl registrierter Writer-Proxies.
Sourcepub fn acknack_count(&self) -> i32
pub fn acknack_count(&self) -> i32
Zaehler der gesendeten ACKNACKs.
Sourcepub fn nackfrag_count(&self) -> i32
pub fn nackfrag_count(&self) -> i32
Zaehler der gesendeten NACK_FRAGs.
Sourcepub fn pending_fragment_count(&self) -> usize
pub fn pending_fragment_count(&self) -> usize
Summe der aktiven (unvollstaendigen) Fragment-Buffer ueber alle Proxies.
Sourcepub fn dropped_fragment_count(&self) -> u64
pub fn dropped_fragment_count(&self) -> u64
Summe der verworfenen Fragmente ueber alle Proxies (DoS-/Inkonsistenz-Diagnose).
Sourcepub fn duplicate_fragment_count(&self) -> u64
pub fn duplicate_fragment_count(&self) -> u64
Anzahl DATA_FRAGs, die fuer bereits-bekannte SNs eintrafen (Duplicate-Fragments, Re-Sends).
Sourcepub fn unknown_src_count(&self) -> u64
pub fn unknown_src_count(&self) -> u64
Anzahl Submessages, deren writer_id keinem registrierten
Proxy zuzuordnen war (Misrouting / Spoofing-Diagnose).
Sourcepub fn add_writer_proxy(&mut self, proxy: WriterProxy)
pub fn add_writer_proxy(&mut self, proxy: WriterProxy)
Fuegt einen Writer-Proxy hinzu. Idempotent: gleiche GUID ersetzt.
Setzt sofort ein preemptives ACKNACK als pending, damit der Writer beim naechsten Tick ein “Hallo, ich bin hier”-ACKNACK bekommt. Cyclone DDS reagiert darauf mit einem HEARTBEAT und beginnt mit DATA-Resends — ohne diesen Impuls wartet der Writer passiv.
Sourcepub fn remove_writer_proxy(&mut self, guid: Guid) -> Option<WriterProxy>
pub fn remove_writer_proxy(&mut self, guid: Guid) -> Option<WriterProxy>
Entfernt einen Writer-Proxy.
Sourcepub fn reset_diagnostics(&mut self)
pub fn reset_diagnostics(&mut self)
Nulliert alle Diagnose-Zaehler. Beruehrt keine State-Maschine.
Sourcepub fn handle_data(&mut self, data: &DataSubmessage) -> Vec<DeliveredSample>
pub fn handle_data(&mut self, data: &DataSubmessage) -> Vec<DeliveredSample>
DATA verarbeiten. Dispatch nach writer_id auf den passenden
Proxy. Liefert die reassemblierten Samples dieses Proxies.
Spec §9.6.3.9 PID_STATUS_INFO: bei key_flag=true + Inline-QoS
mit gesetztem STATUS_INFO wird der CacheChange mit
NotAliveDisposed / NotAliveUnregistered / NotAliveDisposedUnregistered
markiert, statt Alive.
Sourcepub fn handle_data_frag(
&mut self,
df: &DataFragSubmessage,
now: Duration,
) -> Vec<DeliveredSample>
pub fn handle_data_frag( &mut self, df: &DataFragSubmessage, now: Duration, ) -> Vec<DeliveredSample>
DATA_FRAG verarbeiten. now triggert NACK_FRAG-Scheduling
direkt, ohne auf HEARTBEAT zu warten.
Sourcepub fn handle_heartbeat(
&mut self,
hb: &HeartbeatSubmessage,
now: Duration,
) -> Vec<DeliveredSample>
pub fn handle_heartbeat( &mut self, hb: &HeartbeatSubmessage, now: Duration, ) -> Vec<DeliveredSample>
HEARTBEAT verarbeiten. Dispatch nach writer_id.
Sourcepub fn handle_gap(&mut self, gap: &GapSubmessage) -> Vec<DeliveredSample>
pub fn handle_gap(&mut self, gap: &GapSubmessage) -> Vec<DeliveredSample>
GAP verarbeiten. Dispatch nach writer_id.
Sourcepub fn tick(&mut self, now: Duration) -> Result<Vec<Vec<u8>>, WireError>
pub fn tick(&mut self, now: Duration) -> Result<Vec<Vec<u8>>, WireError>
Tick: liefert faellige ACKNACK/NACK_FRAG-Datagramme ueber alle Proxies hinweg. Pro Proxy ein eigenes ACKNACK/NACK_FRAG, weil SN-Spaces pro Writer sind.
§Errors
Wire-Encode-Fehler.
Sourcepub fn tick_outbound(
&mut self,
now: Duration,
) -> Result<Vec<OutboundDatagram>, WireError>
pub fn tick_outbound( &mut self, now: Duration, ) -> Result<Vec<OutboundDatagram>, WireError>
Wie Self::tick, aber mit Ziel-Locators fuer jedes Datagram.
Bevorzugt fuer Transport-Integration, weil jeder AckNack an den
konkreten Writer-Proxy-Unicast-Locator gehen muss.
§Errors
WireError::ValueOutOfRange bei ueberlangem Submessage-Body.
Trait Implementations§
Source§impl Clone for ReliableReader
impl Clone for ReliableReader
Source§fn clone(&self) -> ReliableReader
fn clone(&self) -> ReliableReader
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more