Skip to main content

ParticipantBuiltinTopicData

Struct ParticipantBuiltinTopicData 

Source
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: Guid

GUID des Participants.

§protocol_version: ProtocolVersion

Protokoll-Version (typisch 2.5).

§vendor_id: VendorId

Vendor-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: u32

Bitmask of available builtin endpoints (see endpoint_flag).

§lease_duration: Duration

How 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, propagated over SPDP.

§properties: WirePropertyList

Property 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

Source

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.

Source

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.

Source

pub fn from_pl_cdr_le(bytes: &[u8]) -> Result<Self, WireError>

Decoded from PL_CDR_LE bytes (with encapsulation header).

§Errors

WireError::UnexpectedEof if the bytes are too short; PIDs without a spec-conformant length are ignored (forward-compat).

Trait Implementations§

Source§

impl Clone for ParticipantBuiltinTopicData

Source§

fn clone(&self) -> ParticipantBuiltinTopicData

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ParticipantBuiltinTopicData

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for ParticipantBuiltinTopicData

Source§

impl PartialEq for ParticipantBuiltinTopicData

Source§

fn eq(&self, other: &ParticipantBuiltinTopicData) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for ParticipantBuiltinTopicData

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.