00001
00002 #include "dds/DdsDcpsInfrastructureC.h"
00003 #include "QOS_Common.h"
00004 #include "dds/DCPS/debug.h"
00005
00006 OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL
00007
00008 template <typename XML_QOS_TYPE, typename DDS_QOS_TYPE>
00009 QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::QOS_DwDrTp_Base_T (void)
00010 {
00011 }
00012
00013 template <typename XML_QOS_TYPE, typename DDS_QOS_TYPE>
00014 QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::~QOS_DwDrTp_Base_T (void)
00015 {
00016 }
00017
00018 template <typename XML_QOS_TYPE, typename DDS_QOS_TYPE>
00019 void
00020 QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos (DDS_QOS_TYPE& dds_qos, const XML_QOS_TYPE xml_qos)
00021 {
00022 if (xml_qos->durability_p ())
00023 {
00024 if (xml_qos->durability().kind_p ())
00025 {
00026 QosCommon::get_durability_kind (xml_qos->durability().kind (),
00027 dds_qos.durability.kind);
00028
00029 if (OpenDDS::DCPS::DCPS_debug_level > 9)
00030 {
00031 ACE_DEBUG ((LM_TRACE,
00032 ACE_TEXT ("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
00033 ACE_TEXT ("set durability to <%d>\n"),
00034 dds_qos.durability.kind));
00035 }
00036
00037 }
00038 }
00039 if (xml_qos->deadline_p ())
00040 {
00041 const std::string nsec = xml_qos->deadline().period ().nanosec ();
00042 const std::string sec = xml_qos->deadline().period ().sec ();
00043
00044 QosCommon::get_duration (dds_qos.deadline.period,
00045 sec.c_str (),
00046 nsec.c_str ());
00047
00048 if (OpenDDS::DCPS::DCPS_debug_level > 9)
00049 {
00050 ACE_DEBUG ((LM_TRACE,
00051 ACE_TEXT ("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
00052 ACE_TEXT ("Set deadline to <%d:%u>\n"),
00053 dds_qos.deadline.period.sec,
00054 dds_qos.deadline.period.nanosec));
00055 }
00056 }
00057 if (xml_qos->latency_budget_p ())
00058 {
00059 const std::string nsec = xml_qos->latency_budget().duration ().nanosec ();
00060 const std::string sec = xml_qos->latency_budget().duration ().sec ();
00061
00062 QosCommon::get_duration (dds_qos.latency_budget.duration,
00063 sec.c_str (),
00064 nsec.c_str ());
00065
00066 if (OpenDDS::DCPS::DCPS_debug_level > 9)
00067 {
00068 ACE_DEBUG ((LM_TRACE,
00069 ACE_TEXT ("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
00070 ACE_TEXT ("Set latency_budget to <%d:%u>\n"),
00071 dds_qos.latency_budget.duration.sec, \
00072 dds_qos.latency_budget.duration.nanosec));
00073 }
00074 }
00075 if (xml_qos->liveliness_p ())
00076 {
00077 if (xml_qos->liveliness ().kind_p ())
00078 {
00079 QosCommon::get_liveliness_kind (xml_qos->liveliness ().kind (),
00080 dds_qos.liveliness.kind);
00081
00082 if (OpenDDS::DCPS::DCPS_debug_level > 9)
00083 {
00084 ACE_DEBUG ((LM_TRACE,
00085 ACE_TEXT ("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
00086 ACE_TEXT ("Set liveliness_kind to <%d>\n"),
00087 dds_qos.liveliness.kind));
00088 }
00089 }
00090 if (xml_qos->liveliness ().lease_duration_p ())
00091 {
00092 const std::string nsec = xml_qos->liveliness ().lease_duration ().nanosec ();
00093 const std::string sec = xml_qos->liveliness ().lease_duration ().sec ();
00094
00095 QosCommon::get_duration (dds_qos.liveliness.lease_duration,
00096 sec.c_str (),
00097 nsec.c_str ());
00098
00099 if (OpenDDS::DCPS::DCPS_debug_level > 9)
00100 {
00101 ACE_DEBUG ((LM_TRACE,
00102 ACE_TEXT ("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
00103 ACE_TEXT ("Set liveliness lease_duration to <%d:%u>\n"),
00104 dds_qos.liveliness.lease_duration.sec,
00105 dds_qos.liveliness.lease_duration.nanosec));
00106 }
00107 }
00108 }
00109 if (xml_qos->reliability_p ())
00110 {
00111 if (xml_qos->reliability ().kind_p ())
00112 {
00113 QosCommon::get_realiability_kind (xml_qos->reliability ().kind (),
00114 dds_qos.reliability.kind);
00115
00116 if (OpenDDS::DCPS::DCPS_debug_level > 9)
00117 {
00118 ACE_DEBUG ((LM_TRACE,
00119 ACE_TEXT ("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
00120 ACE_TEXT ("Set reliability_kind to <%d>\n"),
00121 dds_qos.reliability.kind));
00122 }
00123 }
00124 if (xml_qos->reliability ().max_blocking_time_p ())
00125 {
00126 const std::string nsec = xml_qos->reliability().max_blocking_time ().nanosec ();
00127 const std::string sec = xml_qos->reliability().max_blocking_time ().sec ();
00128
00129 QosCommon::get_duration (dds_qos.reliability.max_blocking_time,
00130 sec.c_str (),
00131 nsec.c_str ());
00132
00133 if (OpenDDS::DCPS::DCPS_debug_level > 9)
00134 {
00135 ACE_DEBUG ((LM_TRACE,
00136 ACE_TEXT ("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
00137 ACE_TEXT ("Set reliability max_blocking_time to <%d:%u>\n"),
00138 dds_qos.reliability.max_blocking_time.sec,
00139 dds_qos.reliability.max_blocking_time.nanosec));
00140 }
00141 }
00142 }
00143 if (xml_qos->destination_order_p ())
00144 {
00145 QosCommon::get_destination_order_kind (xml_qos->destination_order ().kind (),
00146 dds_qos.destination_order.kind);
00147
00148 if (OpenDDS::DCPS::DCPS_debug_level > 9)
00149 {
00150 ACE_DEBUG ((LM_TRACE,
00151 ACE_TEXT ("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
00152 ACE_TEXT ("Set destination_order to <%d>\n"),
00153 dds_qos.destination_order.kind));
00154 }
00155 }
00156 if (xml_qos->history_p ())
00157 {
00158 if (xml_qos->history ().kind_p ())
00159 {
00160 QosCommon::get_history_kind (xml_qos->history ().kind (),
00161 dds_qos.history.kind);
00162
00163 if (OpenDDS::DCPS::DCPS_debug_level > 9)
00164 {
00165 ACE_DEBUG ((LM_TRACE,
00166 ACE_TEXT ("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
00167 ACE_TEXT ("Set history to <%d>\n"),
00168 dds_qos.history.kind));
00169 }
00170 }
00171 if (xml_qos->history ().depth_p ())
00172 {
00173 dds_qos.history.depth = static_cast<CORBA::Long>(xml_qos->history().depth());
00174
00175 if (OpenDDS::DCPS::DCPS_debug_level > 9)
00176 {
00177 ACE_DEBUG ((LM_TRACE,
00178 ACE_TEXT ("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
00179 ACE_TEXT ("Set history depth to <%u>\n"),
00180 dds_qos.history.depth));
00181 }
00182 }
00183 }
00184 if (xml_qos->resource_limits_p ())
00185 {
00186 if (xml_qos->resource_limits ().max_samples_p ())
00187 {
00188 const std::string max_samples = xml_qos->resource_limits ().max_samples ();
00189
00190 dds_qos.resource_limits.max_samples =
00191 QosCommon::get_qos_long (max_samples.c_str ());
00192
00193 if (OpenDDS::DCPS::DCPS_debug_level > 9)
00194 {
00195 ACE_DEBUG ((LM_TRACE,
00196 ACE_TEXT ("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
00197 ACE_TEXT ("Set Resource Limits max_samples to <%d>\n"),
00198 dds_qos.resource_limits.max_samples));
00199 }
00200 }
00201 if (xml_qos->resource_limits ().max_instances_p ())
00202 {
00203 const std::string max_instances = xml_qos->resource_limits ().max_instances ();
00204
00205 dds_qos.resource_limits.max_instances =
00206 QosCommon::get_qos_long (max_instances.c_str ());
00207
00208 if (OpenDDS::DCPS::DCPS_debug_level > 9)
00209 {
00210 ACE_DEBUG ((LM_TRACE,
00211 ACE_TEXT ("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
00212 ACE_TEXT ("Set Resource Limits max_instances to <%d>\n"),
00213 dds_qos.resource_limits.max_instances));
00214 }
00215 }
00216 if (xml_qos->resource_limits ().max_samples_per_instance_p ())
00217 {
00218 const std::string max_samples_per_instance =
00219 xml_qos->resource_limits ().max_samples_per_instance ();
00220
00221 dds_qos.resource_limits.max_samples_per_instance =
00222 QosCommon::get_qos_long (max_samples_per_instance.c_str ());
00223
00224 if (OpenDDS::DCPS::DCPS_debug_level > 9)
00225 {
00226 ACE_DEBUG ((LM_TRACE,
00227 ACE_TEXT ("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
00228 ACE_TEXT ("Set Resource Limits max_samples_per_instance to <%d>\n"),
00229 dds_qos.resource_limits.max_samples_per_instance));
00230 }
00231 }
00232 }
00233 if (xml_qos->ownership_p ())
00234 {
00235 QosCommon::get_ownership_kind (xml_qos->ownership ().kind (),
00236 dds_qos.ownership.kind);
00237
00238 if (OpenDDS::DCPS::DCPS_debug_level > 9)
00239 {
00240 ACE_DEBUG ((LM_TRACE,
00241 ACE_TEXT ("QOS_DwDrTp_Base_T<XML_QOS_TYPE, DDS_QOS_TYPE>::read_qos - ")
00242 ACE_TEXT ("Set ownership to <%d>\n"),
00243 dds_qos.ownership.kind));
00244 }
00245 }
00246 }
00247
00248 OPENDDS_END_VERSIONED_NAMESPACE_DECL