use super::infrastructure::qos_policy::{
DataRepresentationQosPolicy, DeadlineQosPolicy, DestinationOrderQosPolicy, DurabilityQosPolicy,
GroupDataQosPolicy, HistoryQosPolicy, LatencyBudgetQosPolicy, LifespanQosPolicy,
LivelinessQosPolicy, OwnershipQosPolicy, OwnershipStrengthQosPolicy, PartitionQosPolicy,
PresentationQosPolicy, ReliabilityQosPolicy, ResourceLimitsQosPolicy, TimeBasedFilterQosPolicy,
TopicDataQosPolicy, TransportPriorityQosPolicy, UserDataQosPolicy,
};
use crate::{
dcps::data_representation_builtin_endpoints::parameter_id_values::{
PID_DATA_REPRESENTATION, PID_DEADLINE, PID_DESTINATION_ORDER, PID_DURABILITY,
PID_ENDPOINT_GUID, PID_GROUP_DATA, PID_HISTORY, PID_LATENCY_BUDGET, PID_LIFESPAN,
PID_LIVELINESS, PID_OWNERSHIP, PID_OWNERSHIP_STRENGTH, PID_PARTICIPANT_GUID, PID_PARTITION,
PID_PRESENTATION, PID_RELIABILITY, PID_RESOURCE_LIMITS, PID_TIME_BASED_FILTER,
PID_TOPIC_DATA, PID_TOPIC_NAME, PID_TRANSPORT_PRIORITY, PID_TYPE_NAME, PID_USER_DATA,
},
infrastructure::{
qos_policy::{
DEFAULT_RELIABILITY_QOS_POLICY_DATA_READER_AND_TOPICS,
DEFAULT_RELIABILITY_QOS_POLICY_DATA_WRITER,
},
type_support::TypeSupport,
},
};
use alloc::string::String;
pub const DCPS_PUBLICATION: &str = "DCPSPublication";
pub const DCPS_SUBSCRIPTION: &str = "DCPSSubscription";
pub const DCPS_TOPIC: &str = "DCPSTopic";
pub const DCPS_PARTICIPANT: &str = "DCPSParticipant";
#[derive(Debug, PartialEq, Eq, Clone, Default, TypeSupport)]
#[dust_dds(extensibility = "final", nested)]
pub struct BuiltInTopicKey {
pub value: [u8; 16], }
#[derive(Debug, PartialEq, Eq, Clone, TypeSupport)]
#[dust_dds(extensibility = "mutable")]
pub struct ParticipantBuiltinTopicData {
#[dust_dds(id=PID_PARTICIPANT_GUID as u32, key)]
pub(crate) key: BuiltInTopicKey,
#[dust_dds(id=PID_USER_DATA as u32, optional)]
pub(crate) user_data: UserDataQosPolicy,
}
impl ParticipantBuiltinTopicData {
pub fn key(&self) -> &BuiltInTopicKey {
&self.key
}
pub fn user_data(&self) -> &UserDataQosPolicy {
&self.user_data
}
}
#[derive(Debug, PartialEq, Eq, Clone, TypeSupport)]
#[dust_dds(extensibility = "mutable")]
pub struct TopicBuiltinTopicData {
#[dust_dds(id=PID_ENDPOINT_GUID as u32, key)]
pub(crate) key: BuiltInTopicKey,
#[dust_dds(id=PID_TOPIC_NAME as u32)]
pub(crate) name: String,
#[dust_dds(id=PID_TYPE_NAME as u32)]
pub(crate) type_name: String,
#[dust_dds(id=PID_DURABILITY as u32, optional)]
pub(crate) durability: DurabilityQosPolicy,
#[dust_dds(id=PID_DEADLINE as u32, optional)]
pub(crate) deadline: DeadlineQosPolicy,
#[dust_dds(id=PID_LATENCY_BUDGET as u32, optional)]
pub(crate) latency_budget: LatencyBudgetQosPolicy,
#[dust_dds(id=PID_LIVELINESS as u32, optional)]
pub(crate) liveliness: LivelinessQosPolicy,
#[dust_dds(id=PID_RELIABILITY as u32, optional, default_value=DEFAULT_RELIABILITY_QOS_POLICY_DATA_READER_AND_TOPICS)]
pub(crate) reliability: ReliabilityQosPolicy,
#[dust_dds(id=PID_TRANSPORT_PRIORITY as u32, optional)]
pub(crate) transport_priority: TransportPriorityQosPolicy,
#[dust_dds(id=PID_LIFESPAN as u32, optional)]
pub(crate) lifespan: LifespanQosPolicy,
#[dust_dds(id=PID_DESTINATION_ORDER as u32, optional)]
pub(crate) destination_order: DestinationOrderQosPolicy,
#[dust_dds(id=PID_HISTORY as u32, optional)]
pub(crate) history: HistoryQosPolicy,
#[dust_dds(id=PID_RESOURCE_LIMITS as u32, optional)]
pub(crate) resource_limits: ResourceLimitsQosPolicy,
#[dust_dds(id=PID_OWNERSHIP as u32, optional)]
pub(crate) ownership: OwnershipQosPolicy,
#[dust_dds(id=PID_TOPIC_DATA as u32, optional)]
pub(crate) topic_data: TopicDataQosPolicy,
#[dust_dds(id=PID_DATA_REPRESENTATION as u32, optional)]
pub(crate) representation: DataRepresentationQosPolicy,
}
impl TopicBuiltinTopicData {
pub fn key(&self) -> &BuiltInTopicKey {
&self.key
}
pub fn name(&self) -> &str {
&self.name
}
pub fn get_type_name(&self) -> &str {
&self.type_name
}
pub fn durability(&self) -> &DurabilityQosPolicy {
&self.durability
}
pub fn deadline(&self) -> &DeadlineQosPolicy {
&self.deadline
}
pub fn latency_budget(&self) -> &LatencyBudgetQosPolicy {
&self.latency_budget
}
pub fn liveliness(&self) -> &LivelinessQosPolicy {
&self.liveliness
}
pub fn reliability(&self) -> &ReliabilityQosPolicy {
&self.reliability
}
pub fn transport_priority(&self) -> &TransportPriorityQosPolicy {
&self.transport_priority
}
pub fn lifespan(&self) -> &LifespanQosPolicy {
&self.lifespan
}
pub fn destination_order(&self) -> &DestinationOrderQosPolicy {
&self.destination_order
}
pub fn history(&self) -> &HistoryQosPolicy {
&self.history
}
pub fn resource_limits(&self) -> &ResourceLimitsQosPolicy {
&self.resource_limits
}
pub fn ownership(&self) -> &OwnershipQosPolicy {
&self.ownership
}
pub fn topic_data(&self) -> &TopicDataQosPolicy {
&self.topic_data
}
pub fn representation(&self) -> &DataRepresentationQosPolicy {
&self.representation
}
}
#[derive(Debug, PartialEq, Eq, Clone, TypeSupport)]
#[dust_dds(extensibility = "mutable")]
pub struct PublicationBuiltinTopicData {
#[dust_dds(id=PID_ENDPOINT_GUID as u32, key)]
pub(crate) key: BuiltInTopicKey,
#[dust_dds(id=PID_PARTICIPANT_GUID as u32, key)]
pub(crate) participant_key: BuiltInTopicKey,
#[dust_dds(id=PID_TOPIC_NAME as u32)]
pub(crate) topic_name: String,
#[dust_dds(id=PID_TYPE_NAME as u32)]
pub(crate) type_name: String,
#[dust_dds(id=PID_DURABILITY as u32, optional)]
pub(crate) durability: DurabilityQosPolicy,
#[dust_dds(id=PID_DEADLINE as u32, optional)]
pub(crate) deadline: DeadlineQosPolicy,
#[dust_dds(id=PID_LATENCY_BUDGET as u32, optional)]
pub(crate) latency_budget: LatencyBudgetQosPolicy,
#[dust_dds(id=PID_LIVELINESS as u32, optional)]
pub(crate) liveliness: LivelinessQosPolicy,
#[dust_dds(id=PID_RELIABILITY as u32, optional, default_value=DEFAULT_RELIABILITY_QOS_POLICY_DATA_WRITER)]
pub(crate) reliability: ReliabilityQosPolicy,
#[dust_dds(id=PID_LIFESPAN as u32, optional)]
pub(crate) lifespan: LifespanQosPolicy,
#[dust_dds(id=PID_USER_DATA as u32, optional)]
pub(crate) user_data: UserDataQosPolicy,
#[dust_dds(id=PID_OWNERSHIP as u32, optional)]
pub(crate) ownership: OwnershipQosPolicy,
#[dust_dds(id=PID_OWNERSHIP_STRENGTH as u32, optional)]
pub(crate) ownership_strength: OwnershipStrengthQosPolicy,
#[dust_dds(id=PID_DESTINATION_ORDER as u32, optional)]
pub(crate) destination_order: DestinationOrderQosPolicy,
#[dust_dds(id=PID_PRESENTATION as u32, optional)]
pub(crate) presentation: PresentationQosPolicy,
#[dust_dds(id=PID_PARTITION as u32, optional)]
pub(crate) partition: PartitionQosPolicy,
#[dust_dds(id=PID_TOPIC_DATA as u32, optional)]
pub(crate) topic_data: TopicDataQosPolicy,
#[dust_dds(id=PID_GROUP_DATA as u32, optional)]
pub(crate) group_data: GroupDataQosPolicy,
#[dust_dds(id=PID_DATA_REPRESENTATION as u32, optional)]
pub(crate) representation: DataRepresentationQosPolicy,
}
impl PublicationBuiltinTopicData {
pub fn key(&self) -> &BuiltInTopicKey {
&self.key
}
pub fn participant_key(&self) -> &BuiltInTopicKey {
&self.participant_key
}
pub fn topic_name(&self) -> &str {
&self.topic_name
}
pub fn get_type_name(&self) -> &str {
&self.type_name
}
pub fn durability(&self) -> &DurabilityQosPolicy {
&self.durability
}
pub fn deadline(&self) -> &DeadlineQosPolicy {
&self.deadline
}
pub fn latency_budget(&self) -> &LatencyBudgetQosPolicy {
&self.latency_budget
}
pub fn liveliness(&self) -> &LivelinessQosPolicy {
&self.liveliness
}
pub fn reliability(&self) -> &ReliabilityQosPolicy {
&self.reliability
}
pub fn lifespan(&self) -> &LifespanQosPolicy {
&self.lifespan
}
pub fn user_data(&self) -> &UserDataQosPolicy {
&self.user_data
}
pub fn ownership(&self) -> &OwnershipQosPolicy {
&self.ownership
}
pub fn ownership_strength(&self) -> &OwnershipStrengthQosPolicy {
&self.ownership_strength
}
pub fn destination_order(&self) -> &DestinationOrderQosPolicy {
&self.destination_order
}
pub fn presentation(&self) -> &PresentationQosPolicy {
&self.presentation
}
pub fn partition(&self) -> &PartitionQosPolicy {
&self.partition
}
pub fn topic_data(&self) -> &TopicDataQosPolicy {
&self.topic_data
}
pub fn group_data(&self) -> &GroupDataQosPolicy {
&self.group_data
}
pub fn representation(&self) -> &DataRepresentationQosPolicy {
&self.representation
}
}
#[derive(Debug, PartialEq, Eq, Clone, TypeSupport)]
#[dust_dds(extensibility = "mutable")]
pub struct SubscriptionBuiltinTopicData {
#[dust_dds(id=PID_ENDPOINT_GUID as u32, key)]
pub(crate) key: BuiltInTopicKey,
#[dust_dds(id=PID_PARTICIPANT_GUID as u32, key)]
pub(crate) participant_key: BuiltInTopicKey,
#[dust_dds(id=PID_TOPIC_NAME as u32)]
pub(crate) topic_name: String,
#[dust_dds(id=PID_TYPE_NAME as u32)]
pub(crate) type_name: String,
#[dust_dds(id=PID_DURABILITY as u32, optional)]
pub(crate) durability: DurabilityQosPolicy,
#[dust_dds(id=PID_DEADLINE as u32, optional)]
pub(crate) deadline: DeadlineQosPolicy,
#[dust_dds(id=PID_LATENCY_BUDGET as u32, optional)]
pub(crate) latency_budget: LatencyBudgetQosPolicy,
#[dust_dds(id=PID_LIVELINESS as u32, optional)]
pub(crate) liveliness: LivelinessQosPolicy,
#[dust_dds(id=PID_RELIABILITY as u32, optional, default_value=DEFAULT_RELIABILITY_QOS_POLICY_DATA_READER_AND_TOPICS)]
pub(crate) reliability: ReliabilityQosPolicy,
#[dust_dds(id=PID_OWNERSHIP as u32, optional)]
pub(crate) ownership: OwnershipQosPolicy,
#[dust_dds(id=PID_DESTINATION_ORDER as u32, optional)]
pub(crate) destination_order: DestinationOrderQosPolicy,
#[dust_dds(id=PID_USER_DATA as u32, optional)]
pub(crate) user_data: UserDataQosPolicy,
#[dust_dds(id=PID_TIME_BASED_FILTER as u32, optional)]
pub(crate) time_based_filter: TimeBasedFilterQosPolicy,
#[dust_dds(id=PID_PRESENTATION as u32, optional)]
pub(crate) presentation: PresentationQosPolicy,
#[dust_dds(id=PID_PARTITION as u32, optional)]
pub(crate) partition: PartitionQosPolicy,
#[dust_dds(id=PID_TOPIC_DATA as u32, optional)]
pub(crate) topic_data: TopicDataQosPolicy,
#[dust_dds(id=PID_GROUP_DATA as u32, optional)]
pub(crate) group_data: GroupDataQosPolicy,
#[dust_dds(id=PID_DATA_REPRESENTATION as u32, optional)]
pub(crate) representation: DataRepresentationQosPolicy,
}
impl SubscriptionBuiltinTopicData {
pub fn key(&self) -> &BuiltInTopicKey {
&self.key
}
pub fn participant_key(&self) -> &BuiltInTopicKey {
&self.participant_key
}
pub fn topic_name(&self) -> &str {
&self.topic_name
}
pub fn get_type_name(&self) -> &str {
&self.type_name
}
pub fn durability(&self) -> &DurabilityQosPolicy {
&self.durability
}
pub fn deadline(&self) -> &DeadlineQosPolicy {
&self.deadline
}
pub fn latency_budget(&self) -> &LatencyBudgetQosPolicy {
&self.latency_budget
}
pub fn liveliness(&self) -> &LivelinessQosPolicy {
&self.liveliness
}
pub fn reliability(&self) -> &ReliabilityQosPolicy {
&self.reliability
}
pub fn ownership(&self) -> &OwnershipQosPolicy {
&self.ownership
}
pub fn destination_order(&self) -> &DestinationOrderQosPolicy {
&self.destination_order
}
pub fn user_data(&self) -> &UserDataQosPolicy {
&self.user_data
}
pub fn time_based_filter(&self) -> &TimeBasedFilterQosPolicy {
&self.time_based_filter
}
pub fn presentation(&self) -> &PresentationQosPolicy {
&self.presentation
}
pub fn partition(&self) -> &PartitionQosPolicy {
&self.partition
}
pub fn topic_data(&self) -> &TopicDataQosPolicy {
&self.topic_data
}
pub fn group_data(&self) -> &GroupDataQosPolicy {
&self.group_data
}
pub fn representation(&self) -> &DataRepresentationQosPolicy {
&self.representation
}
}