pub struct ProbeRequest {Show 35 fields
pub type_name: String,
pub encoding: Encoding,
pub endianness: Endianness,
pub emit: Emit,
pub length_codes: LengthCodePolicy,
pub collection_delimiters: CollectionDelimiterPolicy,
pub map_delimiter: MapDelimiter,
pub wstring_length: WstringLengthPolicy,
pub wchar_framing: WcharFraming,
pub wchar_width: WcharWidth,
pub wstring_unit_order: WstringUnitOrder,
pub pl_cdr1_headers: PlCdr1HeaderPolicy,
pub pid_flags: PidFlagPolicy,
pub pl_cdr1_reading: PlCdr1Reading,
pub encapsulation_ids: EncapsulationIds,
pub must_understand: MustUnderstandPolicy,
pub enum_holder: EnumHolderWidth,
pub union_label: UnionLabelMatch,
pub map_entries: MapEntryOrder,
pub array_element_flattening: ArrayElementFlattening,
pub enumerator_value: EnumeratorValue,
pub union_framing: MutableUnionFraming,
pub short_pid_range: ShortPidRange,
pub fixed_digits: FixedDigitCount,
pub default_extensibility: Extensibility,
pub key_holder: KeyHolderExtensibility,
pub key_holder_nesting: KeyHolderNesting,
pub key_holder_order: KeyHolderOrder,
pub key_holder_alignment: KeyHolderAlignment,
pub defaulted_discriminator_member: DefaultedDiscriminatorMember,
pub map_length: MapLengthPolicy,
pub element_padding: ElementPadding,
pub aggregate_delimiter: AggregateDelimiter,
pub sequence_element_delimiter: SequenceElementDelimiter,
pub wstring_code_units: WstringCodeUnits,
}Expand description
One probe run.
Every field a foreign probe also takes, so the four command lines are the same shape. A field that only one implementation understands would make the matrix unreadable.
Fields§
§type_name: StringThe type, by scoped name — common::Robot.
encoding: EncodingXCDR1 or XCDR2.
endianness: EndiannessByte order.
emit: EmitWhat to write out.
length_codes: LengthCodePolicyHow variable-length @mutable members are framed.
collection_delimiters: CollectionDelimiterPolicyWhich collections carry a delimiter.
map_delimiter: MapDelimiterWhich of a map’s halves decides whether the map is delimited.
wstring_length: WstringLengthPolicyHow a wstring’s length is counted.
wchar_framing: WcharFramingHow a scalar wchar is framed.
wchar_width: WcharWidthHow wide a scalar wchar is.
wstring_unit_order: WstringUnitOrderIn what byte order a wstring’s code units go out.
pl_cdr1_headers: PlCdr1HeaderPolicyHow a @mutable member is framed under XCDR1.
pid_flags: PidFlagPolicyWhat flags a PL_CDR1 parameter id carries, per position.
pl_cdr1_reading: PlCdr1ReadingHow tolerant the PL_CDR1 reader is of another framing.
encapsulation_ids: EncapsulationIdsWhich table the identifier of an encapsulation header is from.
must_understand: MustUnderstandPolicyWhether a member’s must_understand reaches the wire.
enum_holder: EnumHolderWidthHow wide an enumeration’s holder is.
union_label: UnionLabelMatchWhether a negative case label of a narrow signed discriminator selects its branch.
map_entries: MapEntryOrderIn what order a map’s entries go on the wire.
array_element_flattening: ArrayElementFlatteningWhether an array’s element is flattened before the delimiter
question. See ArrayElementFlattening.
enumerator_value: EnumeratorValueWhich integer an enumerator serialises as.
union_framing: MutableUnionFramingHow a @mutable union numbers its branches, and whether its
XCDR1 parameter list is terminated.
short_pid_range: ShortPidRangeWhich member ids fit a PL_CDR1 short parameter header.
fixed_digits: FixedDigitCountWhether a fixed<P,S> carries its declared digit count or the
value’s.
default_extensibility: ExtensibilityWhat an aggregate whose source said nothing is taken to be.
key_holder: KeyHolderExtensibilityWhether a key holder keeps the type’s extensibility.
key_holder_nesting: KeyHolderNestingHow deep a key holder’s member removal reaches.
key_holder_order: KeyHolderOrderIn what order a key holder’s members are serialized.
key_holder_alignment: KeyHolderAlignmentWhether a key holder’s members are aligned.
defaulted_discriminator_member: DefaultedDiscriminatorMemberWhat becomes of a union’s member when @try_construct(use_default)
defaulted its discriminator.
map_length: MapLengthPolicyWhether a delimited map also carries an entry count.
element_padding: ElementPaddingWhether a collection’s elements carry alignment padding between them.
aggregate_delimiter: AggregateDelimiterWhether an aggregate’s declared extensibility reaches the wire.
sequence_element_delimiter: SequenceElementDelimiterWhether a sequence element of a non-@final type is preceded
by its own octet length.
wstring_code_units: WstringCodeUnitsWhich octets stand for a wstring’s characters.
Implementations§
Source§impl ProbeRequest
impl ProbeRequest
Sourcepub fn new(
type_name: &str,
encoding: Encoding,
endianness: Endianness,
) -> ProbeRequest
pub fn new( type_name: &str, encoding: Encoding, endianness: Endianness, ) -> ProbeRequest
A request for type_name in the given encoding and byte order,
in the default dialect.
Sourcepub fn in_dialect(
type_name: &str,
encoding: Encoding,
endianness: Endianness,
dialect: Dialect,
) -> ProbeRequest
pub fn in_dialect( type_name: &str, encoding: Encoding, endianness: Endianness, dialect: Dialect, ) -> ProbeRequest
A request with every wire policy taken from one dialect.
Sourcepub fn from_key(
type_name: &str,
key: LayoutKey,
map_length: MapLengthPolicy,
) -> ProbeRequest
pub fn from_key( type_name: &str, key: LayoutKey, map_length: MapLengthPolicy, ) -> ProbeRequest
A request for type_name planned under key, with map_length
standing in for the one framing question key does not answer
(see MapLengthPolicy’s own documentation for why the entry
count is a codec question and not a layout one).
The field-by-field mapping from a LayoutKey to a ProbeRequest
lives here once. Self::in_dialect is this plus the one
LayoutKey::in_dialect call a dialect alone needs; a caller that
has already built a key — a dialect with axis flags overriding
some of its answers, as zerodds_ast_layout::axes produces —
calls this directly instead of re-deriving the same fields by
hand.
Sourcepub fn emitting(self, emit: Emit) -> ProbeRequest
pub fn emitting(self, emit: Emit) -> ProbeRequest
The same request writing something else out.
Sourcepub fn with_pl_cdr1_reading(self, reading: PlCdr1Reading) -> ProbeRequest
pub fn with_pl_cdr1_reading(self, reading: PlCdr1Reading) -> ProbeRequest
The same request with a PL_CDR1 reader that takes, or reports, a stream in another framing.
Sourcepub fn with_encapsulation_ids(self, ids: EncapsulationIds) -> ProbeRequest
pub fn with_encapsulation_ids(self, ids: EncapsulationIds) -> ProbeRequest
The same request writing the identifiers of an encapsulation header from another table.
Sourcepub const fn wire_pl_cdr1_reading(&self) -> PlCdr1Reading
pub const fn wire_pl_cdr1_reading(&self) -> PlCdr1Reading
How tolerant the PL_CDR1 reader is, as the byte layer names it.
Sourcepub fn layout_key(&self, purpose: Purpose) -> LayoutKey
pub fn layout_key(&self, purpose: Purpose) -> LayoutKey
The layout key this request plans under.
One place, so that the write direction, the read direction and the key holder cannot each assemble a slightly different key out of the same fields.
Sourcepub fn key_holder_key(&self) -> LayoutKey
pub fn key_holder_key(&self) -> LayoutKey
The key-holder key this request plans under.
The same dialect as the payload: §7.6.8 fixes the holder’s byte order and encoding, not what an unannotated aggregate inside it is taken to be, and that decides whether the holder carries a DHEADER. A probe that wrote one dialect’s payload and another’s KeyHash would report a divergence of its own making.
Sourcepub const fn wchar_width(&self) -> WcharWidth
pub const fn wchar_width(&self) -> WcharWidth
How wide a Char16 is for this request.
Sourcepub const fn wire_wchar_framing(&self) -> WcharFraming
pub const fn wire_wchar_framing(&self) -> WcharFraming
How a Char16 is framed for this request, as the byte layer
names it.
Sourcepub const fn wire_wstring_unit_order(&self) -> WstringUnitOrder
pub const fn wire_wstring_unit_order(&self) -> WstringUnitOrder
In what byte order wide code units go out, as the byte layer names it.
Sourcepub fn pl_cdr1_framing(&self) -> PlCdr1Framing
pub fn pl_cdr1_framing(&self) -> PlCdr1Framing
How a writer serving this request frames a PL_CDR1 parameter list.
The header form is in the plan, because it changes a member’s extent; these four do not, so they ride on the writer. Both come from the same policy, which is what keeps them agreeing.
Trait Implementations§
Source§impl Clone for ProbeRequest
impl Clone for ProbeRequest
Source§fn clone(&self) -> ProbeRequest
fn clone(&self) -> ProbeRequest
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more