pub struct HeartbeatSubmessage {
pub reader_id: EntityId,
pub writer_id: EntityId,
pub first_sn: SequenceNumber,
pub last_sn: SequenceNumber,
pub count: i32,
pub final_flag: bool,
pub liveliness_flag: bool,
pub group_info: Option<HeartbeatGroupInfo>,
}Expand description
HEARTBEAT-Submessage.
final_flag, liveliness_flag und group_info_flag (via Some von
group_info) entsprechen den F-/L-/G-Bits im Submessage-Header
(Spec §8.3.7.5.1, §8.3.8.6.2) — sie liegen nicht im Body, werden
aber als semantischer Teil der Nachricht hier gefuehrt.
Fields§
§reader_id: EntityIdReader-EntityId (Ziel).
writer_id: EntityIdWriter-EntityId (Quelle).
first_sn: SequenceNumberErste verfuegbare Sequence-Number im History-Cache.
last_sn: SequenceNumberLetzte gesendete Sequence-Number.
count: i32Count_t (i32) — Heartbeat-Sequenznummer (zur ACK-Korrelation).
final_flag: boolF-Flag: true = Reader muss keine Response senden wenn vollstaendig.
liveliness_flag: boolL-Flag: Liveliness-Announce (ohne History-Semantik).
group_info: Option<HeartbeatGroupInfo>G-Flag (§8.3.8.6.2): optionaler GroupInfo-Trailer.
Implementations§
Source§impl HeartbeatSubmessage
impl HeartbeatSubmessage
Sourcepub const WIRE_SIZE: usize = 28
pub const WIRE_SIZE: usize = 28
Minimal-Wire-Size (Body ohne GroupInfo): 28 Bytes (4+4+8+8+4). Flags sind im Submessage-Header.
Sourcepub fn write_body(&self, little_endian: bool) -> (Vec<u8>, u8)
pub fn write_body(&self, little_endian: bool) -> (Vec<u8>, u8)
Encoded den Body. Liefert (bytes, flags), wobei flags das
Submessage-Header-Flag-Byte inkl. E/F/L/G enthaelt.
Sourcepub fn read_body(
body: &[u8],
little_endian: bool,
final_flag: bool,
liveliness_flag: bool,
group_info_flag: bool,
) -> Result<Self, WireError>
pub fn read_body( body: &[u8], little_endian: bool, final_flag: bool, liveliness_flag: bool, group_info_flag: bool, ) -> Result<Self, WireError>
Decoded den Body. final_flag, liveliness_flag, group_info_flag
werden vom Caller aus dem Submessage-Header extrahiert.
§Errors
UnexpectedEof, ValueOutOfRange (writerSet-Laenge bizarr gross).
Trait Implementations§
Source§impl Clone for HeartbeatSubmessage
impl Clone for HeartbeatSubmessage
Source§fn clone(&self) -> HeartbeatSubmessage
fn clone(&self) -> HeartbeatSubmessage
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 HeartbeatSubmessage
impl Debug for HeartbeatSubmessage
Source§impl PartialEq for HeartbeatSubmessage
impl PartialEq for HeartbeatSubmessage
Source§fn eq(&self, other: &HeartbeatSubmessage) -> bool
fn eq(&self, other: &HeartbeatSubmessage) -> bool
self and other values to be equal, and is used by ==.