32 const std::string& channel_name,
const QosProfile& qos,
33 eprosima::fastrtps::PublisherAttributes* pub_attr) {
36 pub_attr->topic.topicName = channel_name;
37 pub_attr->topic.topicDataType =
"UnderlayMessage";
38 pub_attr->topic.topicKind = eprosima::fastrtps::rtps::NO_KEY;
41 case QosHistoryPolicy::HISTORY_KEEP_LAST:
42 pub_attr->topic.historyQos.kind =
43 eprosima::fastrtps::KEEP_LAST_HISTORY_QOS;
45 case QosHistoryPolicy::HISTORY_KEEP_ALL:
46 pub_attr->topic.historyQos.kind =
47 eprosima::fastrtps::KEEP_ALL_HISTORY_QOS;
54 case QosDurabilityPolicy::DURABILITY_TRANSIENT_LOCAL:
55 pub_attr->qos.m_durability.kind =
56 eprosima::fastrtps::TRANSIENT_LOCAL_DURABILITY_QOS;
58 case QosDurabilityPolicy::DURABILITY_VOLATILE:
59 pub_attr->qos.m_durability.kind =
60 eprosima::fastrtps::VOLATILE_DURABILITY_QOS;
67 case QosReliabilityPolicy::RELIABILITY_BEST_EFFORT:
68 pub_attr->qos.m_reliability.kind =
69 eprosima::fastrtps::BEST_EFFORT_RELIABILITY_QOS;
71 case QosReliabilityPolicy::RELIABILITY_RELIABLE:
72 pub_attr->qos.m_reliability.kind =
73 eprosima::fastrtps::RELIABLE_RELIABILITY_QOS;
80 pub_attr->topic.historyQos.depth =
static_cast<int32_t
>(qos.
depth());
84 if (pub_attr->topic.historyQos.depth < 0) {
90 pub_attr->times.heartbeatPeriod.seconds = 1;
91 pub_attr->times.heartbeatPeriod.fraction(0);
93 uint64_t mps = qos.
mps();
98 }
else if (mps < 64) {
102 uint64_t fractions = (256ull << 32) / mps;
103 uint32_t fraction = fractions & 0xffffffff;
104 int32_t seconds =
static_cast<int32_t
>(fractions >> 32);
106 pub_attr->times.heartbeatPeriod.seconds = seconds;
107 pub_attr->times.heartbeatPeriod.fraction(fraction);
110 pub_attr->qos.m_publishMode.kind =
111 eprosima::fastrtps::ASYNCHRONOUS_PUBLISH_MODE;
112 pub_attr->historyMemoryPolicy =
113 eprosima::fastrtps::rtps::DYNAMIC_RESERVE_MEMORY_MODE;
114 pub_attr->topic.resourceLimitsQos.max_samples = 10000;
120 const std::string& channel_name,
const QosProfile& qos,
121 eprosima::fastrtps::SubscriberAttributes* sub_attr) {
123 sub_attr->topic.topicName = channel_name;
124 sub_attr->topic.topicDataType =
"UnderlayMessage";
125 sub_attr->topic.topicKind = eprosima::fastrtps::rtps::NO_KEY;
128 case QosHistoryPolicy::HISTORY_KEEP_LAST:
129 sub_attr->topic.historyQos.kind =
130 eprosima::fastrtps::KEEP_LAST_HISTORY_QOS;
132 case QosHistoryPolicy::HISTORY_KEEP_ALL:
133 sub_attr->topic.historyQos.kind =
134 eprosima::fastrtps::KEEP_ALL_HISTORY_QOS;
141 case QosDurabilityPolicy::DURABILITY_TRANSIENT_LOCAL:
142 sub_attr->qos.m_durability.kind =
143 eprosima::fastrtps::TRANSIENT_LOCAL_DURABILITY_QOS;
145 case QosDurabilityPolicy::DURABILITY_VOLATILE:
146 sub_attr->qos.m_durability.kind =
147 eprosima::fastrtps::VOLATILE_DURABILITY_QOS;
154 case QosReliabilityPolicy::RELIABILITY_BEST_EFFORT:
155 sub_attr->qos.m_reliability.kind =
156 eprosima::fastrtps::BEST_EFFORT_RELIABILITY_QOS;
158 case QosReliabilityPolicy::RELIABILITY_RELIABLE:
159 sub_attr->qos.m_reliability.kind =
160 eprosima::fastrtps::RELIABLE_RELIABILITY_QOS;
167 sub_attr->topic.historyQos.depth =
static_cast<int32_t
>(qos.
depth());
171 if (sub_attr->topic.historyQos.depth < 0) {
175 sub_attr->historyMemoryPolicy =
176 eprosima::fastrtps::rtps::DYNAMIC_RESERVE_MEMORY_MODE;
177 sub_attr->topic.resourceLimitsQos.max_samples = 10000;