OpenDDS  Snapshot(2023/04/07-19:43)
Public Member Functions | List of all members
QOS_DwDrTp_Base_T< XML_QOS_TYPE, DDS_QOS_TYPE > Class Template Reference

#include <QOS_DwDrTp_Base_T.h>

Inheritance diagram for QOS_DwDrTp_Base_T< XML_QOS_TYPE, DDS_QOS_TYPE >:
Inheritance graph
[legend]

Public Member Functions

 QOS_DwDrTp_Base_T ()
 
 ~QOS_DwDrTp_Base_T ()
 
void read_qos (DDS_QOS_TYPE &, const XML_QOS_TYPE)
 

Detailed Description

template<typename XML_QOS_TYPE, typename DDS_QOS_TYPE>
class QOS_DwDrTp_Base_T< XML_QOS_TYPE, DDS_QOS_TYPE >

Author
Marcel Smit (msmit.nosp@m.@rem.nosp@m.edy.n.nosp@m.l)

This template contains the parsing of all QOS XML setting which the DataWriter, the DataReader, and the Topic Qos have in common. The DDS_QOS_TYPE template attribute can either contain an DDS::DataReaderQos, an DDS::DataWriterQos, or an DDS::TopicQos. These are the IDL representatives.

The XML_QOS_TYPE can either contain an ::dds::datareaderQos, an ::dds::datawriterQos, or an ::dds::topicQos. These are the XML representatives.

Definition at line 23 of file QOS_DwDrTp_Base_T.h.

Constructor & Destructor Documentation

◆ QOS_DwDrTp_Base_T()

template<typename XML_QOS_TYPE , typename DDS_QOS_TYPE >
OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL QOS_DwDrTp_Base_T< XML_QOS_TYPE, DDS_QOS_TYPE >::QOS_DwDrTp_Base_T ( )

Definition at line 8 of file QOS_DwDrTp_Base_T.cpp.

9 {
10 }

◆ ~QOS_DwDrTp_Base_T()

template<typename XML_QOS_TYPE , typename DDS_QOS_TYPE >
QOS_DwDrTp_Base_T< XML_QOS_TYPE, DDS_QOS_TYPE >::~QOS_DwDrTp_Base_T ( )

Definition at line 13 of file QOS_DwDrTp_Base_T.cpp.

14 {
15 }

Member Function Documentation

◆ read_qos()

template<typename XML_QOS_TYPE , typename DDS_QOS_TYPE >
void QOS_DwDrTp_Base_T< XML_QOS_TYPE, DDS_QOS_TYPE >::read_qos ( DDS_QOS_TYPE &  dds_qos,
const XML_QOS_TYPE  xml_qos 
)

Definition at line 19 of file QOS_DwDrTp_Base_T.cpp.

References ACE_DEBUG, ACE_TEXT(), OpenDDS::DCPS::DCPS_debug_level, QosCommon::get_data_presentation_id_kind(), QosCommon::get_destination_order_kind(), QosCommon::get_durability_kind(), QosCommon::get_duration(), QosCommon::get_history_kind(), QosCommon::get_liveliness_kind(), QosCommon::get_ownership_kind(), QosCommon::get_qos_long(), QosCommon::get_realiability_kind(), LM_TRACE, max_samples, and OPENDDS_END_VERSIONED_NAMESPACE_DECL.

20 {
21  if (xml_qos->durability_p())
22  {
23  if (xml_qos->durability().kind_p())
24  {
25  QosCommon::get_durability_kind(xml_qos->durability().kind(),
26  dds_qos.durability.kind);
27 
29  {
30  ACE_DEBUG((LM_TRACE,
31  ACE_TEXT("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
32  ACE_TEXT("set durability to <%d>\n"),
33  dds_qos.durability.kind));
34  }
35  }
36  }
37  if (xml_qos->deadline_p())
38  {
39  const ACE_TString sec(xml_qos->deadline().period().sec().c_str());
40  const ACE_TString nsec(xml_qos->deadline().period().nanosec().c_str());
41 
42  QosCommon::get_duration(dds_qos.deadline.period,
43  sec.c_str(),
44  nsec.c_str());
45 
47  {
48  ACE_DEBUG((LM_TRACE,
49  ACE_TEXT("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
50  ACE_TEXT("Set deadline to <%d:%u>\n"),
51  dds_qos.deadline.period.sec,
52  dds_qos.deadline.period.nanosec));
53  }
54  }
55  if (xml_qos->latency_budget_p())
56  {
57  const ACE_TString sec(xml_qos->latency_budget().duration().sec().c_str());
58  const ACE_TString nsec(xml_qos->latency_budget().duration().nanosec().c_str());
59 
60  QosCommon::get_duration(dds_qos.latency_budget.duration,
61  sec.c_str(),
62  nsec.c_str());
63 
65  {
66  ACE_DEBUG((LM_TRACE,
67  ACE_TEXT("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
68  ACE_TEXT("Set latency_budget to <%d:%u>\n"),
69  dds_qos.latency_budget.duration.sec, \
70  dds_qos.latency_budget.duration.nanosec));
71  }
72  }
73  if (xml_qos->liveliness_p())
74  {
75  if (xml_qos->liveliness().kind_p())
76  {
77  QosCommon::get_liveliness_kind(xml_qos->liveliness().kind(),
78  dds_qos.liveliness.kind);
79 
81  {
82  ACE_DEBUG((LM_TRACE,
83  ACE_TEXT("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
84  ACE_TEXT("Set liveliness_kind to <%d>\n"),
85  dds_qos.liveliness.kind));
86  }
87  }
88  if (xml_qos->liveliness().lease_duration_p())
89  {
90  const ACE_TString sec(xml_qos->liveliness().lease_duration().sec().c_str());
91  const ACE_TString nsec(xml_qos->liveliness().lease_duration().nanosec().c_str());
92 
93  QosCommon::get_duration(dds_qos.liveliness.lease_duration,
94  sec.c_str(),
95  nsec.c_str());
96 
98  {
99  ACE_DEBUG((LM_TRACE,
100  ACE_TEXT("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
101  ACE_TEXT("Set liveliness lease_duration to <%d:%u>\n"),
102  dds_qos.liveliness.lease_duration.sec,
103  dds_qos.liveliness.lease_duration.nanosec));
104  }
105  }
106  }
107  if (xml_qos->reliability_p())
108  {
109  if (xml_qos->reliability().kind_p())
110  {
111  QosCommon::get_realiability_kind(xml_qos->reliability().kind(),
112  dds_qos.reliability.kind);
113 
115  {
116  ACE_DEBUG((LM_TRACE,
117  ACE_TEXT("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
118  ACE_TEXT("Set reliability_kind to <%d>\n"),
119  dds_qos.reliability.kind));
120  }
121  }
122  if (xml_qos->reliability().max_blocking_time_p())
123  {
124  const ACE_TString sec(xml_qos->reliability().max_blocking_time().sec().c_str());
125  const ACE_TString nsec(xml_qos->reliability().max_blocking_time().nanosec().c_str());
126 
127  QosCommon::get_duration(dds_qos.reliability.max_blocking_time,
128  sec.c_str(),
129  nsec.c_str());
130 
132  {
133  ACE_DEBUG((LM_TRACE,
134  ACE_TEXT("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
135  ACE_TEXT("Set reliability max_blocking_time to <%d:%u>\n"),
136  dds_qos.reliability.max_blocking_time.sec,
137  dds_qos.reliability.max_blocking_time.nanosec));
138  }
139  }
140  }
141  if (xml_qos->destination_order_p())
142  {
143  QosCommon::get_destination_order_kind(xml_qos->destination_order().kind(),
144  dds_qos.destination_order.kind);
145 
147  {
148  ACE_DEBUG((LM_TRACE,
149  ACE_TEXT("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
150  ACE_TEXT("Set destination_order to <%d>\n"),
151  dds_qos.destination_order.kind));
152  }
153  }
154  if (xml_qos->history_p())
155  {
156  if (xml_qos->history().kind_p())
157  {
158  QosCommon::get_history_kind(xml_qos->history().kind(),
159  dds_qos.history.kind);
160 
162  {
163  ACE_DEBUG((LM_TRACE,
164  ACE_TEXT("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
165  ACE_TEXT("Set history to <%d>\n"),
166  dds_qos.history.kind));
167  }
168  }
169  if (xml_qos->history().depth_p())
170  {
171  dds_qos.history.depth = static_cast<CORBA::Long>(xml_qos->history().depth());
172 
174  {
175  ACE_DEBUG((LM_TRACE,
176  ACE_TEXT("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
177  ACE_TEXT("Set history depth to <%u>\n"),
178  dds_qos.history.depth));
179  }
180  }
181  }
182  if (xml_qos->resource_limits_p())
183  {
184  if (xml_qos->resource_limits().max_samples_p())
185  {
186  const ACE_TString max_samples(xml_qos->resource_limits().max_samples().c_str());
187 
188  dds_qos.resource_limits.max_samples =
190 
192  {
193  ACE_DEBUG((LM_TRACE,
194  ACE_TEXT("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
195  ACE_TEXT("Set Resource Limits max_samples to <%d>\n"),
196  dds_qos.resource_limits.max_samples));
197  }
198  }
199  if (xml_qos->resource_limits().max_instances_p())
200  {
201  const ACE_TString max_instances(xml_qos->resource_limits().max_instances().c_str());
202 
203  dds_qos.resource_limits.max_instances =
204  QosCommon::get_qos_long(max_instances.c_str());
205 
207  {
208  ACE_DEBUG((LM_TRACE,
209  ACE_TEXT("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
210  ACE_TEXT("Set Resource Limits max_instances to <%d>\n"),
211  dds_qos.resource_limits.max_instances));
212  }
213  }
214  if (xml_qos->resource_limits().max_samples_per_instance_p())
215  {
216  const ACE_TString max_samples_per_instance(xml_qos->resource_limits().max_samples_per_instance().c_str());
217 
218  dds_qos.resource_limits.max_samples_per_instance =
219  QosCommon::get_qos_long(max_samples_per_instance.c_str());
220 
222  {
223  ACE_DEBUG((LM_TRACE,
224  ACE_TEXT("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
225  ACE_TEXT("Set Resource Limits max_samples_per_instance to <%d>\n"),
226  dds_qos.resource_limits.max_samples_per_instance));
227  }
228  }
229  }
230  if (xml_qos->ownership_p())
231  {
232  QosCommon::get_ownership_kind(xml_qos->ownership().kind(),
233  dds_qos.ownership.kind);
234 
236  {
237  ACE_DEBUG((LM_TRACE,
238  ACE_TEXT("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
239  ACE_TEXT("Set ownership to <%d>\n"),
240  dds_qos.ownership.kind));
241  }
242  }
243  if (xml_qos->representation_p())
244  {
245  if (xml_qos->representation().value_p())
246  {
247  dds_qos.representation.value.length(static_cast<CORBA::ULong>(xml_qos->representation().value().count_element()));
248  CORBA::ULong pos = 0;
249  for (::dds::dataRepresentationIdSeq::element_const_iterator it = xml_qos->representation().value().begin_element();
250  it != xml_qos->representation().value().end_element();
251  ++it, ++pos)
252  {
253  QosCommon::get_data_presentation_id_kind(*(it->get()), dds_qos.representation.value[pos]);
254 
256  {
257  ACE_DEBUG((LM_TRACE,
258  ACE_TEXT("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
259  ACE_TEXT("Data representation <%d> inserted in representation at position <%u>\n"),
260  dds_qos.representation.value[pos], pos));
261  }
262  }
263  }
264  }
265 }
static void get_data_presentation_id_kind(::dds::dataRepresentationIdKind kind, ::DDS::DataRepresentationId_t &dds_kind)
Definition: QOS_Common.cpp:203
#define ACE_DEBUG(X)
ACE_CDR::Long Long
static void get_destination_order_kind(const ::dds::destinationOrderKind kind, ::DDS::DestinationOrderQosPolicyKind &dds_kind)
Definition: QOS_Common.cpp:137
static void get_durability_kind(const ::dds::durabilityKind kind, ::DDS::DurabilityQosPolicyKind &dds_kind)
Definition: QOS_Common.cpp:6
static void get_history_kind(const ::dds::historyKind kind, ::DDS::HistoryQosPolicyKind &dds_kind)
Definition: QOS_Common.cpp:34
ACE_CDR::ULong ULong
local interface<%TYPE%> inout ::DDS::SampleInfoSeq in long max_samples
Definition: IDLTemplate.txt:66
::CORBA::Long get_qos_long(const ACE_TCHAR *value)
Definition: QOS_Common.cpp:78
static void get_duration(::DDS::Duration_t &duration, const ACE_TCHAR *sec, const ACE_TCHAR *nsec)
Definition: QOS_Common.cpp:56
OpenDDS_Dcps_Export unsigned int DCPS_debug_level
Definition: debug.cpp:30
ACE_TEXT("TCP_Factory")
static void get_liveliness_kind(const ::dds::livelinessKind kind, ::DDS::LivelinessQosPolicyKind &dds_kind)
Definition: QOS_Common.cpp:90
static void get_realiability_kind(const dds::reliabilityKind kind, ::DDS::ReliabilityQosPolicyKind &dds_kind)
Definition: QOS_Common.cpp:115
static void get_ownership_kind(::dds::ownershipKind kind, ::DDS::OwnershipQosPolicyKind &dds_kind)
Definition: QOS_Common.cpp:159

The documentation for this class was generated from the following files: