pub struct ParticipantBuiltinTopicData {Show 19 fields
pub guid: Guid,
pub protocol_version: ProtocolVersion,
pub vendor_id: VendorId,
pub default_unicast_locator: Option<Locator>,
pub default_multicast_locator: Option<Locator>,
pub metatraffic_unicast_locator: Option<Locator>,
pub metatraffic_multicast_locator: Option<Locator>,
pub domain_id: Option<u32>,
pub builtin_endpoint_set: u32,
pub lease_duration: Duration,
pub user_data: Vec<u8>,
pub properties: WirePropertyList,
pub identity_token: Option<Vec<u8>>,
pub permissions_token: Option<Vec<u8>>,
pub identity_status_token: Option<Vec<u8>>,
pub sig_algo_info: Option<ParticipantSecurityDigitalSignatureAlgorithmInfo>,
pub kx_algo_info: Option<ParticipantSecurityKeyEstablishmentAlgorithmInfo>,
pub sym_cipher_algo_info: Option<ParticipantSecuritySymmetricCipherAlgorithmInfo>,
pub participant_security_info: Option<ParticipantSecurityInfo>,
}Expand description
SPDP discovered-participant data. Subset.
Fields§
§guid: GuidGUID des Participants.
protocol_version: ProtocolVersionProtokoll-Version (typisch 2.5).
vendor_id: VendorIdVendor-Identifier.
default_unicast_locator: Option<Locator>Default-Unicast-Locator — wohin Peers User-Daten schicken.
default_multicast_locator: Option<Locator>Default multicast locator — user-data multicast.
metatraffic_unicast_locator: Option<Locator>Metatraffic unicast locator — where peers send SEDP unicast. Indispensable for SEDP interop (e.g. Cyclone): Cyclone routes publications/subscriptions to exactly this locator after a match.
metatraffic_multicast_locator: Option<Locator>Metatraffic multicast locator — the SPDP/SEDP multicast group.
domain_id: Option<u32>DDS domain ID. Cyclone filters beacons from other domains; if the PID is missing, domain 0 is usually assumed.
builtin_endpoint_set: u32Bitmask of available builtin endpoints
(see endpoint_flag).
lease_duration: DurationHow long the participant is considered “alive” without a renewed beacon.
user_data: Vec<u8>UserData QoS at the participant (spec §2.2.3.1) — opaque
sequence
properties: WirePropertyListProperty list (PID_PROPERTY_LIST, 0x0059). Carrier for
security-plugin classes, permissions tokens and ZeroDDS
heterogeneous-security caps (WP 4H-b). Empty for peers without
security announcements (legacy compatibility).
identity_token: Option<Vec<u8>>Raw CDR-encoded IdentityToken blob (DDS-Security 1.2 §7.4.1.4
Tab.16, PID_IDENTITY_TOKEN=0x1001). Parsed by the DDS-Security
layer (zerodds_security::token::DataHolder) — RTPS only passes
the bytes through, so this crate stays transport-free.
None for legacy peers without a security announce.
permissions_token: Option<Vec<u8>>Raw CDR-encoded PermissionsToken blob (DDS-Security 1.2
§7.4.1.5 Tab.17, PID_PERMISSIONS_TOKEN=0x1002).
identity_status_token: Option<Vec<u8>>Raw CDR-encoded IdentityStatusToken blob (DDS-Security 1.2
§7.4.1.6, PID_IDENTITY_STATUS_TOKEN=0x1006). Optional, carries
the OCSP live status.
sig_algo_info: Option<ParticipantSecurityDigitalSignatureAlgorithmInfo>ParticipantSecurityDigitalSignatureAlgorithmInfo (DDS-Security
1.2 §7.3.11, PID=0x1010). Optional — None = spec default
(RSASSA-PSS + ECDSA-P256).
kx_algo_info: Option<ParticipantSecurityKeyEstablishmentAlgorithmInfo>ParticipantSecurityKeyEstablishmentAlgorithmInfo (DDS-Security
1.2 §7.3.12, PID=0x1011). Optional — None = spec default
(DHE-MODP-2048 + ECDHE-CEUM-P256).
sym_cipher_algo_info: Option<ParticipantSecuritySymmetricCipherAlgorithmInfo>ParticipantSecuritySymmetricCipherAlgorithmInfo (DDS-Security
1.2 §7.3.13, PID=0x1012). Optional — None = spec default
(AES128|AES256 supported, AES128 required).
participant_security_info: Option<ParticipantSecurityInfo>ParticipantSecurityInfo (DDS-Security 1.2 §7.4.1.6,
PID_PARTICIPANT_SECURITY_INFO=0x1005). Two attribute bitmasks at
participant level. Mandatory for cross-vendor interop: foreign
vendors (cyclone/FastDDS) classify a participant WITHOUT this PID as
NON-SECURE and reject its endpoints. None = legacy/plain.
Implementations§
Source§impl ParticipantBuiltinTopicData
impl ParticipantBuiltinTopicData
Sourcepub fn to_pl_cdr_le(&self) -> Vec<u8> ⓘ
pub fn to_pl_cdr_le(&self) -> Vec<u8> ⓘ
Encodes to PL_CDR_LE bytes (with a 4-byte encapsulation header).
The output is directly usable as the serialized_payload of a DATA
submessage.
Sourcepub fn to_pl_cdr_be(&self) -> Vec<u8> ⓘ
pub fn to_pl_cdr_be(&self) -> Vec<u8> ⓘ
Encodes to PL_CDR_BE bytes (encapsulation 0x0002, all values
big-endian). For the handshake c.pdata (DDS-Security §9.3.2.5.2:
“CDR Big-Endian serialization of the ParticipantBuiltinTopicData”) —
cyclone/FastDDS deserialize c.pdata strictly as a BE ParameterList;
LE yields “Deserialize parameter failed: payload too long”.
The credential tokens (identity_token/permissions_token/ identity_status_token) are OMITTED here: they are LE-encoded DataHolder blobs and travel separately in the handshake as c.id/c.perm — Cyclone’s c.pdata also does not contain them.
Trait Implementations§
Source§impl Clone for ParticipantBuiltinTopicData
impl Clone for ParticipantBuiltinTopicData
Source§fn clone(&self) -> ParticipantBuiltinTopicData
fn clone(&self) -> ParticipantBuiltinTopicData
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more