pub enum PidFlagPolicy {
SentinelMustUnderstand,
Bare,
ImplExtensionOnMembers,
}Expand description
What flags a PL_CDR1 parameter id carries, at a position.
The byte-layer half of zerodds_ast_layout::PidFlagPolicy, which
carries the measurement. XTypes 1.3 §7.4.1.2 splits the sixteen-bit
field: the low fourteen bits are the id, bit 14 is
PID_MUST_UNDERSTAND and bit 15 is PID_IMPL_EXTENSION.
A member’s own must_understand is not on this axis — it is
PlCdr1Framing::member_must_understand, and the writer ORs the two
together. This one answers the part that does not depend on what the
member declared, which is the whole of the sentinel’s answer:
PID_LIST_END is not a member and has nothing to declare.
Variants§
SentinelMustUnderstand
A bare member id, and PID_MUST_UNDERSTAND on the sentinel.
Cyclone DDS and RTI Connext 7.7.
Bare
Bare everywhere. Fast DDS.
ImplExtensionOnMembers
PID_IMPL_EXTENSION | PID_MUST_UNDERSTAND on every member id
whatever the member declared, and a bare sentinel. OpenDDS.
Measured on the short header only: OpenDDS writes no
extended header anywhere in the recorded corpus, so
Writer::write_pid_extended does not claim an answer for
FLAG_1 of an eMemberHeader.
Implementations§
Source§impl PidFlagPolicy
impl PidFlagPolicy
Sourcepub const fn flags_at(self, position: WirePosition) -> u16
pub const fn flags_at(self, position: WirePosition) -> u16
The flag bits a parameter id carries at position.
Only WirePosition::Member, WirePosition::Sentinel and
WirePosition::ExtendedMarker have a parameter id at all;
WirePosition::Element answers zero because there is nothing
there to carry a flag.
The marker’s answers are Cyclone and RTI 7f01, Fast DDS 3f01,
OpenDDS ff01 — the same three values, at a third position.