1pub use zerodds_qos::{
11 DeadlineQosPolicy, DestinationOrderKind, DestinationOrderQosPolicy, DurabilityKind,
12 DurabilityQosPolicy, DurabilityServiceQosPolicy, EntityFactoryQosPolicy, GroupDataQosPolicy,
13 HistoryKind, HistoryQosPolicy, LatencyBudgetQosPolicy, LifespanQosPolicy, LivelinessKind,
14 LivelinessQosPolicy, OwnershipKind, OwnershipQosPolicy, OwnershipStrengthQosPolicy,
15 PartitionQosPolicy, PresentationAccessScope, PresentationQosPolicy,
16 ReaderDataLifecycleQosPolicy, ReliabilityKind, ReliabilityQosPolicy, ResourceLimitsQosPolicy,
17 TimeBasedFilterQosPolicy, TopicDataQosPolicy, TransportPriorityQosPolicy, UserDataQosPolicy,
18 WriterDataLifecycleQosPolicy,
19};
20
21use zerodds_qos::Duration;
22
23#[derive(Debug, Clone, PartialEq, Eq)]
26pub struct DataWriterQos {
27 pub reliability: ReliabilityQosPolicy,
29 pub durability: DurabilityQosPolicy,
31 pub durability_service: DurabilityServiceQosPolicy,
33 pub deadline: DeadlineQosPolicy,
35 pub latency_budget: LatencyBudgetQosPolicy,
37 pub liveliness: LivelinessQosPolicy,
39 pub destination_order: DestinationOrderQosPolicy,
41 pub lifespan: LifespanQosPolicy,
43 pub ownership: OwnershipQosPolicy,
45 pub ownership_strength: OwnershipStrengthQosPolicy,
47 pub partition: PartitionQosPolicy,
49 pub presentation: PresentationQosPolicy,
51 pub history: HistoryQosPolicy,
53 pub resource_limits: ResourceLimitsQosPolicy,
55 pub transport_priority: TransportPriorityQosPolicy,
57 pub writer_data_lifecycle: WriterDataLifecycleQosPolicy,
59 pub user_data: UserDataQosPolicy,
61 pub topic_data: TopicDataQosPolicy,
63 pub group_data: GroupDataQosPolicy,
65}
66
67impl Default for DataWriterQos {
68 fn default() -> Self {
69 Self {
70 reliability: ReliabilityQosPolicy {
71 kind: ReliabilityKind::Reliable,
72 max_blocking_time: Duration::from_millis(100_i32),
73 },
74 durability: DurabilityQosPolicy {
75 kind: DurabilityKind::Volatile,
76 },
77 durability_service: DurabilityServiceQosPolicy::default(),
78 deadline: DeadlineQosPolicy::default(),
79 latency_budget: LatencyBudgetQosPolicy::default(),
80 liveliness: LivelinessQosPolicy::default(),
81 destination_order: DestinationOrderQosPolicy::default(),
82 lifespan: LifespanQosPolicy::default(),
83 ownership: OwnershipQosPolicy::default(),
84 ownership_strength: OwnershipStrengthQosPolicy::default(),
85 partition: PartitionQosPolicy::default(),
86 presentation: PresentationQosPolicy::default(),
87 history: HistoryQosPolicy {
88 kind: HistoryKind::KeepLast,
89 depth: 1,
90 },
91 resource_limits: ResourceLimitsQosPolicy {
92 max_samples: 1000_i32,
93 max_instances: 10_i32,
94 max_samples_per_instance: 100_i32,
95 },
96 transport_priority: TransportPriorityQosPolicy::default(),
97 writer_data_lifecycle: WriterDataLifecycleQosPolicy::default(),
98 user_data: UserDataQosPolicy::default(),
99 topic_data: TopicDataQosPolicy::default(),
100 group_data: GroupDataQosPolicy::default(),
101 }
102 }
103}
104
105#[derive(Debug, Clone, PartialEq, Eq)]
107pub struct DataReaderQos {
108 pub reliability: ReliabilityQosPolicy,
110 pub durability: DurabilityQosPolicy,
112 pub deadline: DeadlineQosPolicy,
114 pub latency_budget: LatencyBudgetQosPolicy,
116 pub liveliness: LivelinessQosPolicy,
118 pub destination_order: DestinationOrderQosPolicy,
120 pub ownership: OwnershipQosPolicy,
122 pub partition: PartitionQosPolicy,
124 pub presentation: PresentationQosPolicy,
126 pub history: HistoryQosPolicy,
128 pub resource_limits: ResourceLimitsQosPolicy,
130 pub time_based_filter: TimeBasedFilterQosPolicy,
132 pub reader_data_lifecycle: ReaderDataLifecycleQosPolicy,
134 pub user_data: UserDataQosPolicy,
136 pub topic_data: TopicDataQosPolicy,
138 pub group_data: GroupDataQosPolicy,
140}
141
142impl Default for DataReaderQos {
143 fn default() -> Self {
144 Self {
145 reliability: ReliabilityQosPolicy {
146 kind: ReliabilityKind::BestEffort,
147 max_blocking_time: Duration::from_millis(100_i32),
148 },
149 durability: DurabilityQosPolicy {
150 kind: DurabilityKind::Volatile,
151 },
152 deadline: DeadlineQosPolicy::default(),
153 latency_budget: LatencyBudgetQosPolicy::default(),
154 liveliness: LivelinessQosPolicy::default(),
155 destination_order: DestinationOrderQosPolicy::default(),
156 ownership: OwnershipQosPolicy::default(),
157 partition: PartitionQosPolicy::default(),
158 presentation: PresentationQosPolicy::default(),
159 history: HistoryQosPolicy {
160 kind: HistoryKind::KeepLast,
161 depth: 1,
162 },
163 resource_limits: ResourceLimitsQosPolicy {
164 max_samples: 1000_i32,
165 max_instances: 10_i32,
166 max_samples_per_instance: 100_i32,
167 },
168 time_based_filter: TimeBasedFilterQosPolicy::default(),
169 reader_data_lifecycle: ReaderDataLifecycleQosPolicy::default(),
170 user_data: UserDataQosPolicy::default(),
171 topic_data: TopicDataQosPolicy::default(),
172 group_data: GroupDataQosPolicy::default(),
173 }
174 }
175}
176
177#[derive(Debug, Clone, PartialEq, Eq, Default)]
179pub struct TopicQos {
180 pub durability: DurabilityQosPolicy,
182 pub durability_service: DurabilityServiceQosPolicy,
184 pub deadline: DeadlineQosPolicy,
186 pub latency_budget: LatencyBudgetQosPolicy,
188 pub liveliness: LivelinessQosPolicy,
190 pub reliability: ReliabilityQosPolicy,
192 pub destination_order: DestinationOrderQosPolicy,
194 pub history: HistoryQosPolicy,
196 pub resource_limits: ResourceLimitsQosPolicy,
198 pub transport_priority: TransportPriorityQosPolicy,
200 pub lifespan: LifespanQosPolicy,
202 pub ownership: OwnershipQosPolicy,
204 pub topic_data: TopicDataQosPolicy,
206}
207
208#[derive(Debug, Clone, PartialEq, Eq, Default)]
210pub struct DomainParticipantQos {
211 pub user_data: UserDataQosPolicy,
213 pub entity_factory: EntityFactoryQosPolicy,
215}
216
217#[derive(Debug, Clone, PartialEq, Eq, Default)]
219pub struct PublisherQos {
220 pub presentation: PresentationQosPolicy,
222 pub partition: PartitionQosPolicy,
224 pub group_data: GroupDataQosPolicy,
226 pub entity_factory: EntityFactoryQosPolicy,
228}
229
230#[derive(Debug, Clone, PartialEq, Eq, Default)]
232pub struct SubscriberQos {
233 pub presentation: PresentationQosPolicy,
235 pub partition: PartitionQosPolicy,
237 pub group_data: GroupDataQosPolicy,
239 pub entity_factory: EntityFactoryQosPolicy,
241}