37 {
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;
46 break;
47 case QosHistoryPolicy::HISTORY_KEEP_ALL:
48 pub_attr->topic.historyQos.kind =
49 eprosima::fastdds::dds::KEEP_ALL_HISTORY_QOS;
50 break;
51 default:
52 break;
53 }
55 case QosDurabilityPolicy::DURABILITY_TRANSIENT_LOCAL:
56 pub_attr->qos.m_durability.kind =
57 eprosima::fastdds::dds::TRANSIENT_LOCAL_DURABILITY_QOS;
58 break;
59 case QosDurabilityPolicy::DURABILITY_VOLATILE:
60 pub_attr->qos.m_durability.kind =
61 eprosima::fastdds::dds::VOLATILE_DURABILITY_QOS;
62 break;
63 default:
64 break;
65 }
66
68 case QosReliabilityPolicy::RELIABILITY_BEST_EFFORT:
69 pub_attr->qos.m_reliability.kind =
70 eprosima::fastdds::dds::BEST_EFFORT_RELIABILITY_QOS;
71 break;
72 case QosReliabilityPolicy::RELIABILITY_RELIABLE:
73 pub_attr->qos.m_reliability.kind =
74 eprosima::fastdds::dds::RELIABLE_RELIABILITY_QOS;
75 break;
76 default:
77 break;
78 }
79 if (qos.
depth() != QosProfileConf::QOS_HISTORY_DEPTH_SYSTEM_DEFAULT) {
80 pub_attr->topic.historyQos.depth =
static_cast<int32_t
>(qos.
depth());
81 }
82
83
85
86
87
88 pub_attr->times.heartbeatPeriod.seconds = 0;
89 pub_attr->times.heartbeatPeriod.fraction(300 * 4294967);
91 uint64_t mps = qos.
mps();
92
93
94 if (mps > 1024) {
95 mps = 1024;
96 } else if (mps < 64) {
97 mps = 64;
98 }
99
100 uint64_t fractions = (256ull << 32) / mps;
101 uint32_t fraction = fractions & 0xffffffff;
102 int32_t seconds = static_cast<int32_t>(fractions >> 32);
103
104 pub_attr->times.heartbeatPeriod.seconds = seconds;
105 pub_attr->times.heartbeatPeriod.fraction(fraction);
106 }
107
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
117 << "]";
118
119 return true;
120}
#define RETURN_VAL_IF2(condition, val)
#define RETURN_VAL_IF_NULL2(ptr, val)
optional QosHistoryPolicy history
optional QosDurabilityPolicy durability
optional QosReliabilityPolicy reliability