36 const std::string& channel_name,
const QosProfile& qos,
37 eprosima::fastrtps::PublisherAttributes* pub_attr) {
39 pub_attr->topic.topicName = channel_name;
40 pub_attr->topic.topicDataType =
"UnderlayMessage";
41 pub_attr->topic.topicKind = eprosima::fastrtps::rtps::NO_KEY;
43 case QosHistoryPolicy::HISTORY_KEEP_LAST:
44 pub_attr->topic.historyQos.kind =
45 eprosima::fastdds::dds::KEEP_LAST_HISTORY_QOS;
47 case QosHistoryPolicy::HISTORY_KEEP_ALL:
48 pub_attr->topic.historyQos.kind =
49 eprosima::fastdds::dds::KEEP_ALL_HISTORY_QOS;
55 case QosDurabilityPolicy::DURABILITY_TRANSIENT_LOCAL:
56 pub_attr->qos.m_durability.kind =
57 eprosima::fastdds::dds::TRANSIENT_LOCAL_DURABILITY_QOS;
59 case QosDurabilityPolicy::DURABILITY_VOLATILE:
60 pub_attr->qos.m_durability.kind =
61 eprosima::fastdds::dds::VOLATILE_DURABILITY_QOS;
68 case QosReliabilityPolicy::RELIABILITY_BEST_EFFORT:
69 pub_attr->qos.m_reliability.kind =
70 eprosima::fastdds::dds::BEST_EFFORT_RELIABILITY_QOS;
72 case QosReliabilityPolicy::RELIABILITY_RELIABLE:
73 pub_attr->qos.m_reliability.kind =
74 eprosima::fastdds::dds::RELIABLE_RELIABILITY_QOS;
80 pub_attr->topic.historyQos.depth =
static_cast<int32_t
>(qos.
depth());
88 pub_attr->times.heartbeatPeriod.seconds = 0;
89 pub_attr->times.heartbeatPeriod.fraction(300 * 4294967);
91 uint64_t mps = qos.
mps();
96 }
else if (mps < 64) {
100 uint64_t fractions = (256ull << 32) / mps;
101 uint32_t fraction = fractions & 0xffffffff;
102 int32_t seconds =
static_cast<int32_t
>(fractions >> 32);
104 pub_attr->times.heartbeatPeriod.seconds = seconds;
105 pub_attr->times.heartbeatPeriod.fraction(fraction);
108 pub_attr->qos.m_publishMode.kind =
109 eprosima::fastdds::dds::ASYNCHRONOUS_PUBLISH_MODE;
110 pub_attr->historyMemoryPolicy =
111 eprosima::fastrtps::rtps::DYNAMIC_RESERVE_MEMORY_MODE;
112 AINFO << channel_name <<
"qos: [history: " << pub_attr->topic.historyQos.kind
113 <<
"] [durability: " << pub_attr->qos.m_durability.kind
114 <<
"] [reliability: " << pub_attr->qos.m_reliability.kind
115 <<
"] [depth: " << pub_attr->topic.historyQos.depth
116 <<
"] [samples: " << pub_attr->topic.resourceLimitsQos.max_samples
123 const std::string& channel_name,
const QosProfile& qos,
124 eprosima::fastrtps::SubscriberAttributes* sub_attr) {
126 sub_attr->topic.topicName = channel_name;
127 sub_attr->topic.topicDataType =
"UnderlayMessage";
128 sub_attr->topic.topicKind = eprosima::fastrtps::rtps::NO_KEY;
131 case QosHistoryPolicy::HISTORY_KEEP_LAST:
132 sub_attr->topic.historyQos.kind =
133 eprosima::fastdds::dds::KEEP_LAST_HISTORY_QOS;
135 case QosHistoryPolicy::HISTORY_KEEP_ALL:
136 sub_attr->topic.historyQos.kind =
137 eprosima::fastdds::dds::KEEP_ALL_HISTORY_QOS;
143 case QosDurabilityPolicy::DURABILITY_TRANSIENT_LOCAL:
144 sub_attr->qos.m_durability.kind =
145 eprosima::fastdds::dds::TRANSIENT_LOCAL_DURABILITY_QOS;
147 case QosDurabilityPolicy::DURABILITY_VOLATILE:
148 sub_attr->qos.m_durability.kind =
149 eprosima::fastdds::dds::VOLATILE_DURABILITY_QOS;
156 case QosReliabilityPolicy::RELIABILITY_BEST_EFFORT:
157 sub_attr->qos.m_reliability.kind =
158 eprosima::fastdds::dds::BEST_EFFORT_RELIABILITY_QOS;
160 case QosReliabilityPolicy::RELIABILITY_RELIABLE:
161 sub_attr->qos.m_reliability.kind =
162 eprosima::fastdds::dds::RELIABLE_RELIABILITY_QOS;
168 sub_attr->topic.historyQos.depth =
static_cast<int32_t
>(qos.
depth());
174 sub_attr->historyMemoryPolicy =
175 eprosima::fastrtps::rtps::DYNAMIC_RESERVE_MEMORY_MODE;
176 AINFO << channel_name <<
"qos: [history: " << sub_attr->topic.historyQos.kind
177 <<
"] [durability: " << sub_attr->qos.m_durability.kind
178 <<
"] [reliability: " << sub_attr->qos.m_reliability.kind
179 <<
"] [depth: " << sub_attr->topic.historyQos.depth
180 <<
"] [samples: " << sub_attr->topic.resourceLimitsQos.max_samples
187 const std::string& channel_name,
const QosProfile& qos,
188 eprosima::fastrtps::TopicAttributes* topic_attr) {
190 topic_attr->topicName = channel_name;
191 topic_attr->topicDataType =
"UnderlayMessage";
192 topic_attr->topicKind = eprosima::fastrtps::rtps::NO_KEY;
195 case QosHistoryPolicy::HISTORY_KEEP_LAST:
196 topic_attr->historyQos.kind =
197 eprosima::fastdds::dds::KEEP_LAST_HISTORY_QOS;
199 case QosHistoryPolicy::HISTORY_KEEP_ALL:
200 topic_attr->historyQos.kind =
201 eprosima::fastdds::dds::KEEP_ALL_HISTORY_QOS;
208 topic_attr->historyQos.depth =
static_cast<int32_t
>(qos.
depth());
220 eprosima::fastdds::dds::PublisherQos* pub_qos) {
222 eprosima::fastrtps::PublisherAttributes pub_attr;
226 pub_qos->group_data().setValue(pub_attr.qos.m_groupData);
227 pub_qos->partition() = pub_attr.qos.m_partition;
228 pub_qos->presentation() = pub_attr.qos.m_presentation;
233 const std::string& channel_name,
const QosProfile& qos,
234 eprosima::fastdds::dds::DataWriterQos* writer_qos) {
236 eprosima::fastrtps::PublisherAttributes pub_attr;
240 writer_qos->writer_resource_limits().matched_subscriber_allocation =
241 pub_attr.matched_subscriber_allocation;
242 writer_qos->properties() = pub_attr.properties;
243 writer_qos->throughput_controller() = pub_attr.throughputController;
244 writer_qos->endpoint().unicast_locator_list = pub_attr.unicastLocatorList;
245 writer_qos->endpoint().multicast_locator_list = pub_attr.multicastLocatorList;
246 writer_qos->endpoint().remote_locator_list = pub_attr.remoteLocatorList;
247 writer_qos->endpoint().history_memory_policy = pub_attr.historyMemoryPolicy;
248 writer_qos->endpoint().user_defined_id = pub_attr.getUserDefinedID();
249 writer_qos->endpoint().entity_id = pub_attr.getEntityID();
250 writer_qos->reliable_writer_qos().times = pub_attr.times;
251 writer_qos->reliable_writer_qos().disable_positive_acks =
252 pub_attr.qos.m_disablePositiveACKs;
253 writer_qos->durability() = pub_attr.qos.m_durability;
254 writer_qos->durability_service() = pub_attr.qos.m_durabilityService;
255 writer_qos->deadline() = pub_attr.qos.m_deadline;
256 writer_qos->latency_budget() = pub_attr.qos.m_latencyBudget;
257 writer_qos->liveliness() = pub_attr.qos.m_liveliness;
258 writer_qos->reliability() = pub_attr.qos.m_reliability;
259 writer_qos->lifespan() = pub_attr.qos.m_lifespan;
260 writer_qos->user_data().setValue(pub_attr.qos.m_userData);
261 writer_qos->ownership() = pub_attr.qos.m_ownership;
262 writer_qos->ownership_strength() = pub_attr.qos.m_ownershipStrength;
263 writer_qos->destination_order() = pub_attr.qos.m_destinationOrder;
264 writer_qos->representation() = pub_attr.qos.representation;
265 writer_qos->publish_mode() = pub_attr.qos.m_publishMode;
266 writer_qos->history() = pub_attr.topic.historyQos;
267 writer_qos->resource_limits() = pub_attr.topic.resourceLimitsQos;
273 eprosima::fastdds::dds::SubscriberQos* sub_qos) {
275 eprosima::fastrtps::SubscriberAttributes sub_attr;
279 sub_qos->group_data().setValue(sub_attr.qos.m_groupData);
280 sub_qos->partition() = sub_attr.qos.m_partition;
281 sub_qos->presentation() = sub_attr.qos.m_presentation;
287 eprosima::fastdds::dds::DataReaderQos* reader_qos) {
289 eprosima::fastrtps::SubscriberAttributes sub_attr;
293 reader_qos->reader_resource_limits().matched_publisher_allocation =
294 sub_attr.matched_publisher_allocation;
295 reader_qos->properties() = sub_attr.properties;
296 reader_qos->expects_inline_qos(sub_attr.expectsInlineQos);
297 reader_qos->endpoint().unicast_locator_list = sub_attr.unicastLocatorList;
298 reader_qos->endpoint().multicast_locator_list = sub_attr.multicastLocatorList;
299 reader_qos->endpoint().remote_locator_list = sub_attr.remoteLocatorList;
300 reader_qos->endpoint().history_memory_policy = sub_attr.historyMemoryPolicy;
301 reader_qos->endpoint().user_defined_id = sub_attr.getUserDefinedID();
302 reader_qos->endpoint().entity_id = sub_attr.getEntityID();
303 reader_qos->reliable_reader_qos().times = sub_attr.times;
304 reader_qos->reliable_reader_qos().disable_positive_ACKs =
305 sub_attr.qos.m_disablePositiveACKs;
306 reader_qos->durability() = sub_attr.qos.m_durability;
307 reader_qos->durability_service() = sub_attr.qos.m_durabilityService;
308 reader_qos->deadline() = sub_attr.qos.m_deadline;
309 reader_qos->latency_budget() = sub_attr.qos.m_latencyBudget;
310 reader_qos->liveliness() = sub_attr.qos.m_liveliness;
311 reader_qos->reliability() = sub_attr.qos.m_reliability;
312 reader_qos->lifespan() = sub_attr.qos.m_lifespan;
313 reader_qos->user_data().setValue(sub_attr.qos.m_userData);
314 reader_qos->ownership() = sub_attr.qos.m_ownership;
315 reader_qos->destination_order() = sub_attr.qos.m_destinationOrder;
316 reader_qos->type_consistency().type_consistency =
317 sub_attr.qos.type_consistency;
318 reader_qos->type_consistency().representation = sub_attr.qos.representation;
319 reader_qos->time_based_filter() = sub_attr.qos.m_timeBasedFilter;
320 reader_qos->history() = sub_attr.topic.historyQos;
321 reader_qos->resource_limits() = sub_attr.topic.resourceLimitsQos;
327 eprosima::fastdds::dds::TopicQos* topic_qos) {
329 eprosima::fastrtps::TopicAttributes topic_attr;
333 topic_qos->history() = topic_attr.historyQos;
334 topic_qos->resource_limits() = topic_attr.resourceLimitsQos;