Fast RTPS  Version 2.10.6
Fast RTPS
XMLParser.h
1 // Copyright 2017 Proyectos y Sistemas de Mantenimiento SL (eProsima).
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 //
15 #ifndef XML_PARSER_H_
16 #define XML_PARSER_H_
17 
18 #include <stdio.h>
19 #include <fastrtps/transport/TransportDescriptorInterface.h>
20 #include <fastrtps/attributes/ParticipantAttributes.h>
21 #include <fastrtps/attributes/PublisherAttributes.h>
22 #include <fastrtps/attributes/SubscriberAttributes.h>
23 #include <fastrtps/attributes/RequesterAttributes.hpp>
24 #include <fastrtps/attributes/ReplierAttributes.hpp>
25 #include <fastrtps/xmlparser/XMLParserCommon.h>
26 #include <fastrtps/types/DynamicTypeBuilderPtr.h>
27 #include <fastrtps/attributes/LibrarySettingsAttributes.h>
28 
29 #include <map>
30 #include <mutex>
31 #include <set>
32 #include <string>
33 
34 namespace tinyxml2 {
35 class XMLElement;
36 class XMLDocument;
37 } // namespace tinyxml2
38 
39 namespace eprosima {
40 namespace fastrtps {
41 namespace xmlparser {
42 
43 class BaseNode;
44 template <class T> class DataNode;
45 
46 typedef std::unique_ptr<BaseNode> up_base_node_t;
47 typedef std::vector<up_base_node_t> up_base_node_vector_t;
48 typedef std::map<std::string, std::string> node_att_map_t;
49 typedef node_att_map_t::iterator node_att_map_it_t;
50 typedef node_att_map_t::const_iterator node_att_map_cit_t;
51 
52 typedef std::shared_ptr<fastdds::rtps::TransportDescriptorInterface> sp_transport_t;
53 typedef std::map<std::string, sp_transport_t> sp_transport_map_t;
55 typedef std::map<std::string, p_dynamictypebuilder_t> p_dynamictype_map_t;
56 
57 typedef std::unique_ptr<ParticipantAttributes> up_participant_t;
60 typedef std::unique_ptr<node_participant_t> up_node_participant_t;
61 
62 typedef std::unique_ptr<PublisherAttributes> up_publisher_t;
65 typedef std::unique_ptr<node_publisher_t> up_node_publisher_t;
66 
67 typedef std::unique_ptr<SubscriberAttributes> up_subscriber_t;
70 typedef std::unique_ptr<node_subscriber_t> up_node_subscriber_t;
71 
72 typedef std::unique_ptr<TopicAttributes> up_topic_t;
75 typedef std::unique_ptr<node_topic_t> up_node_topic_t;
76 
77 typedef std::unique_ptr<RequesterAttributes> up_requester_t;
80 typedef std::unique_ptr<node_requester_t> up_node_requester_t;
81 
82 typedef std::unique_ptr<ReplierAttributes> up_replier_t;
85 typedef std::unique_ptr<node_replier_t> up_node_replier_t;
86 
91 class XMLParser
92 {
93 
94 public:
95 
96  using FlowControllerDescriptorList = std::vector<std::shared_ptr<fastdds::rtps::FlowControllerDescriptor>>;
97 
102  RTPS_DllAPI static XMLP_ret loadDefaultXMLFile(
103  up_base_node_t& root);
104 
111  RTPS_DllAPI static XMLP_ret loadXML(
112  const std::string& filename,
113  up_base_node_t& root);
114 
123  const std::string& filename,
124  up_base_node_t& root,
125  bool is_default);
126 
134  RTPS_DllAPI static XMLP_ret loadXML(
135  const char* data,
136  size_t length,
137  up_base_node_t& root);
138 
145  RTPS_DllAPI static XMLP_ret loadXML(
146  tinyxml2::XMLDocument& xmlDoc,
147  up_base_node_t& root);
148 
155  RTPS_DllAPI static XMLP_ret loadXMLProfiles(
156  tinyxml2::XMLElement& profiles,
157  up_base_node_t& root);
158 
164  RTPS_DllAPI static XMLP_ret loadXMLDynamicTypes(
165  tinyxml2::XMLElement& types);
166 
167 
173  RTPS_DllAPI static XMLP_ret clear();
174 
175 protected:
176 
177  RTPS_DllAPI static XMLP_ret parseXML(
178  tinyxml2::XMLDocument& xmlDoc,
179  up_base_node_t& root);
180 
181  RTPS_DllAPI static XMLP_ret parseXMLProfiles(
182  tinyxml2::XMLElement& profiles,
183  up_base_node_t& root);
184 
185  RTPS_DllAPI static XMLP_ret parseProfiles(
186  tinyxml2::XMLElement* p_root,
187  BaseNode& profilesNode);
188 
189 
195  RTPS_DllAPI static XMLP_ret parseLogConfig(
196  tinyxml2::XMLElement* p_root);
197 
198  RTPS_DllAPI static XMLP_ret parseXMLLibrarySettings(
199  tinyxml2::XMLElement* p_root);
200 
201  RTPS_DllAPI static XMLP_ret parseXMLTransportsProf(
202  tinyxml2::XMLElement* p_root);
203 
204  RTPS_DllAPI static XMLP_ret parseXMLParticipantProf(
205  tinyxml2::XMLElement* p_root,
206  BaseNode& rootNode);
207 
208  RTPS_DllAPI static XMLP_ret parseXMLPublisherProf(
209  tinyxml2::XMLElement* p_root,
210  BaseNode& rootNode);
211 
212  RTPS_DllAPI static XMLP_ret parseXMLSubscriberProf(
213  tinyxml2::XMLElement* p_root,
214  BaseNode& rootNode);
215 
216  RTPS_DllAPI static XMLP_ret parseXMLTopicData(
217  tinyxml2::XMLElement* p_root,
218  BaseNode& rootNode);
219 
220  RTPS_DllAPI static XMLP_ret parseXMLRequesterProf(
221  tinyxml2::XMLElement* p_root,
222  BaseNode& rootNode);
223 
224  RTPS_DllAPI static XMLP_ret parseXMLReplierProf(
225  tinyxml2::XMLElement* p_root,
226  BaseNode& rootNode);
227 
228  RTPS_DllAPI static XMLP_ret parseXMLTransportData(
229  tinyxml2::XMLElement* p_root);
230 
232  tinyxml2::XMLElement* p_root,
233  sp_transport_t p_transport);
234 
236  tinyxml2::XMLElement* p_root,
237  sp_transport_t p_transport);
238 
240  tinyxml2::XMLElement* p_root,
241  sp_transport_t p_transport);
242 
243  RTPS_DllAPI static XMLP_ret parse_tls_config(
244  tinyxml2::XMLElement* p_root,
245  sp_transport_t tcp_transport);
246 
252  RTPS_DllAPI static XMLP_ret parseXMLConsumer(
253  tinyxml2::XMLElement& consumer);
254 
255  RTPS_DllAPI static XMLP_ret parseXMLDynamicTypes(
256  tinyxml2::XMLElement& types);
257 
258  RTPS_DllAPI static XMLP_ret parseDynamicTypes(
259  tinyxml2::XMLElement* p_root);
260 
261  RTPS_DllAPI static XMLP_ret parseXMLTypes(
262  tinyxml2::XMLElement* p_root);
263 
264  RTPS_DllAPI static XMLP_ret parseXMLDynamicType(
265  tinyxml2::XMLElement* p_root);
266 
268  tinyxml2::XMLElement* p_root);
269 
270  RTPS_DllAPI static XMLP_ret parseXMLUnionDynamicType(
271  tinyxml2::XMLElement* p_root);
272 
273  RTPS_DllAPI static XMLP_ret parseXMLEnumDynamicType(
274  tinyxml2::XMLElement* p_root);
275 
276  RTPS_DllAPI static XMLP_ret parseXMLAliasDynamicType(
277  tinyxml2::XMLElement* p_root);
278 
280  tinyxml2::XMLElement* p_root);
281 
283  tinyxml2::XMLElement* p_root);
284 
286  tinyxml2::XMLElement* p_root,
287  p_dynamictypebuilder_t p_dynamictype,
288  types::MemberId mId,
289  uint16_t& position);
290 
292  tinyxml2::XMLElement* p_root,
293  p_dynamictypebuilder_t p_dynamictype,
294  uint16_t& position);
295 
297  tinyxml2::XMLElement* p_root,
298  p_dynamictypebuilder_t p_dynamictype,
299  types::MemberId mId);
300 
302  tinyxml2::XMLElement* p_root,
303  p_dynamictypebuilder_t p_dynamictype,
304  types::MemberId mId,
305  const std::string& values);
306 
307  RTPS_DllAPI static XMLP_ret fillDataNode(
308  tinyxml2::XMLElement* p_profile,
309  DataNode<ParticipantAttributes>& participant_node);
310 
311  RTPS_DllAPI static XMLP_ret fillDataNode(
312  tinyxml2::XMLElement* p_profile,
313  DataNode<PublisherAttributes>& publisher_node);
314 
315  RTPS_DllAPI static XMLP_ret fillDataNode(
316  tinyxml2::XMLElement* p_profile,
317  DataNode<SubscriberAttributes>& subscriber_node);
318 
319  RTPS_DllAPI static XMLP_ret fillDataNode(
320  tinyxml2::XMLElement* node,
321  DataNode<TopicAttributes>& topic_node);
322 
323  RTPS_DllAPI static XMLP_ret fillDataNode(
324  tinyxml2::XMLElement* node,
325  DataNode<RequesterAttributes>& requester_node);
326 
327  RTPS_DllAPI static XMLP_ret fillDataNode(
328  tinyxml2::XMLElement* node,
329  DataNode<ReplierAttributes>& replier_node);
330 
331  template <typename T>
332  RTPS_DllAPI static void addAllAttributes(
333  tinyxml2::XMLElement* p_profile,
334  DataNode<T>& node);
335 
336  RTPS_DllAPI static XMLP_ret getXMLEnum(
337  tinyxml2::XMLElement* elem,
339  uint8_t ident);
340 
341  RTPS_DllAPI static XMLP_ret getXMLPropertiesPolicy(
342  tinyxml2::XMLElement* elem,
343  rtps::PropertyPolicy& propertiesPolicy,
344  uint8_t ident);
345 
347  tinyxml2::XMLElement* elem,
348  rtps::MemoryManagementPolicy_t& historyMemoryPolicy,
349  uint8_t ident);
350 
352  tinyxml2::XMLElement* elem,
353  fastdds::rtps::ExternalLocators& external_locators,
354  uint8_t ident);
355 
356  RTPS_DllAPI static XMLP_ret getXMLLocatorList(
357  tinyxml2::XMLElement* elem,
358  rtps::LocatorList_t& locatorList,
359  uint8_t ident);
360 
361  RTPS_DllAPI static XMLP_ret getXMLLocatorUDPv4(
362  tinyxml2::XMLElement* elem,
363  rtps::Locator_t& locator,
364  uint8_t ident);
365 
366  RTPS_DllAPI static XMLP_ret getXMLLocatorUDPv6(
367  tinyxml2::XMLElement* elem,
368  rtps::Locator_t& locator,
369  uint8_t ident);
370 
371  RTPS_DllAPI static XMLP_ret getXMLLocatorTCPv4(
372  tinyxml2::XMLElement* elem,
373  rtps::Locator_t& locator,
374  uint8_t ident);
375 
376  RTPS_DllAPI static XMLP_ret getXMLLocatorTCPv6(
377  tinyxml2::XMLElement* elem,
378  rtps::Locator_t& locator,
379  uint8_t ident);
380 
381  RTPS_DllAPI static XMLP_ret getXMLWriterTimes(
382  tinyxml2::XMLElement* elem,
383  rtps::WriterTimes& times,
384  uint8_t ident);
385 
386  RTPS_DllAPI static XMLP_ret getXMLReaderTimes(
387  tinyxml2::XMLElement* elem,
388  rtps::ReaderTimes& times,
389  uint8_t ident);
390 
391  RTPS_DllAPI static XMLP_ret getXMLDuration(
392  tinyxml2::XMLElement* elem,
393  Duration_t& duration,
394  uint8_t ident);
395 
396  RTPS_DllAPI static XMLP_ret getXMLWriterQosPolicies(
397  tinyxml2::XMLElement* elem,
398  WriterQos& qos,
399  uint8_t ident);
400 
401  RTPS_DllAPI static XMLP_ret getXMLReaderQosPolicies(
402  tinyxml2::XMLElement* elem,
403  ReaderQos& qos,
404  uint8_t ident);
405 
406  RTPS_DllAPI static XMLP_ret getXMLPublishModeQos(
407  tinyxml2::XMLElement* elem,
408  PublishModeQosPolicy& publishMode,
409  uint8_t ident);
410 
411  RTPS_DllAPI static XMLP_ret getXMLGroupDataQos(
412  tinyxml2::XMLElement* elem,
413  GroupDataQosPolicy& groupData,
414  uint8_t ident);
415 
416  RTPS_DllAPI static XMLP_ret getXMLTopicDataQos(
417  tinyxml2::XMLElement* elem,
418  TopicDataQosPolicy& topicData,
419  uint8_t ident);
420 
421  RTPS_DllAPI static XMLP_ret getXMLPartitionQos(
422  tinyxml2::XMLElement* elem,
423  PartitionQosPolicy& partition,
424  uint8_t ident);
425 
426  RTPS_DllAPI static XMLP_ret getXMLPresentationQos(
427  tinyxml2::XMLElement* elem,
428  PresentationQosPolicy& presentation,
429  uint8_t ident);
430 
432  tinyxml2::XMLElement* elem,
433  DestinationOrderQosPolicy& destinationOrder,
434  uint8_t ident);
435 
437  tinyxml2::XMLElement* elem,
438  OwnershipStrengthQosPolicy& ownershipStrength,
439  uint8_t ident);
440 
441  RTPS_DllAPI static XMLP_ret getXMLOwnershipQos(
442  tinyxml2::XMLElement* elem,
443  OwnershipQosPolicy& ownership,
444  uint8_t ident);
445 
446  RTPS_DllAPI static XMLP_ret getXMLTimeBasedFilterQos(
447  tinyxml2::XMLElement* elem,
448  TimeBasedFilterQosPolicy& timeBasedFilter,
449  uint8_t ident);
450 
451  RTPS_DllAPI static XMLP_ret getXMLUserDataQos(
452  tinyxml2::XMLElement* elem,
453  UserDataQosPolicy& userData,
454  uint8_t ident);
455 
456  RTPS_DllAPI static XMLP_ret getXMLLifespanQos(
457  tinyxml2::XMLElement* elem,
458  LifespanQosPolicy& lifespan,
459  uint8_t ident);
460 
461  RTPS_DllAPI static XMLP_ret getXMLReliabilityQos(
462  tinyxml2::XMLElement* elem,
463  ReliabilityQosPolicy& reliability,
464  uint8_t ident);
465 
466  RTPS_DllAPI static XMLP_ret getXMLLivelinessQos(
467  tinyxml2::XMLElement* elem,
468  LivelinessQosPolicy& liveliness,
469  uint8_t ident);
470 
471  RTPS_DllAPI static XMLP_ret getXMLLatencyBudgetQos(
472  tinyxml2::XMLElement* elem,
473  LatencyBudgetQosPolicy& latencyBudget,
474  uint8_t ident);
475 
476  RTPS_DllAPI static XMLP_ret getXMLDeadlineQos(
477  tinyxml2::XMLElement* elem,
478  DeadlineQosPolicy& deadline,
479  uint8_t ident);
480 
482  tinyxml2::XMLElement* elem,
483  DurabilityServiceQosPolicy& durabilityService,
484  uint8_t ident);
485 
486  RTPS_DllAPI static XMLP_ret getXMLDurabilityQos(
487  tinyxml2::XMLElement* elem,
488  DurabilityQosPolicy& durability,
489  uint8_t ident);
490 
491  RTPS_DllAPI static XMLP_ret getXMLTopicAttributes(
492  tinyxml2::XMLElement* elem,
493  TopicAttributes& topic,
494  uint8_t ident);
495 
496  RTPS_DllAPI static XMLP_ret getXMLHistoryQosPolicy(
497  tinyxml2::XMLElement* elem,
498  HistoryQosPolicy& historyQos,
499  uint8_t ident);
500 
501  RTPS_DllAPI static XMLP_ret getXMLResourceLimitsQos(
502  tinyxml2::XMLElement* elem,
503  ResourceLimitsQosPolicy& resourceLimitsQos,
504  uint8_t ident);
505 
507  tinyxml2::XMLElement* elem,
508  ResourceLimitedContainerConfig& resourceLimitsQos,
509  uint8_t ident);
510 
512  tinyxml2::XMLElement* elem,
513  rtps::ThroughputControllerDescriptor& throughputController,
514  uint8_t ident);
515 
517  tinyxml2::XMLElement* elem,
518  FlowControllerDescriptorList& flow_controller_descriptor_list,
519  uint8_t ident);
520 
521  RTPS_DllAPI static XMLP_ret getXMLPortParameters(
522  tinyxml2::XMLElement* elem,
523  rtps::PortParameters& port,
524  uint8_t ident);
525 
527  tinyxml2::XMLElement* elem,
528  rtps::RTPSParticipantAllocationAttributes& allocation,
529  uint8_t ident);
530 
532  tinyxml2::XMLElement* elem,
533  rtps::RemoteLocatorsAllocationAttributes& allocation,
534  uint8_t ident);
535 
537  tinyxml2::XMLElement* elem,
538  rtps::SendBuffersAllocationAttributes& allocation,
539  uint8_t ident);
540 
541  RTPS_DllAPI static XMLP_ret getXMLDiscoverySettings(
542  tinyxml2::XMLElement* elem,
543  rtps::DiscoverySettings& settings,
544  uint8_t ident);
545 
547  tinyxml2::XMLElement* elem,
548  rtps::InitialAnnouncementConfig& config,
549  uint8_t ident);
550 
551  RTPS_DllAPI static XMLP_ret getXMLBuiltinAttributes(
552  tinyxml2::XMLElement* elem,
553  rtps::BuiltinAttributes& builtin,
554  uint8_t ident);
555 
556  RTPS_DllAPI static XMLP_ret getXMLOctetVector(
557  tinyxml2::XMLElement* elem,
558  std::vector<rtps::octet>& octet_vector,
559  uint8_t ident);
560 
561  RTPS_DllAPI static XMLP_ret getXMLInt(
562  tinyxml2::XMLElement* elem,
563  int* i,
564  uint8_t ident);
565 
566  RTPS_DllAPI static XMLP_ret getXMLUint(
567  tinyxml2::XMLElement* elem,
568  unsigned int* ui,
569  uint8_t ident);
570 
571  RTPS_DllAPI static XMLP_ret getXMLUint(
572  tinyxml2::XMLElement* elem,
573  uint16_t* ui16,
574  uint8_t ident);
575 
576  RTPS_DllAPI static XMLP_ret getXMLUint(
577  tinyxml2::XMLElement* elem,
578  uint64_t* ui64,
579  uint8_t ident);
580 
581  RTPS_DllAPI static XMLP_ret getXMLBool(
582  tinyxml2::XMLElement* elem,
583  bool* b,
584  uint8_t ident);
585 
586  RTPS_DllAPI static XMLP_ret getXMLEnum(
587  tinyxml2::XMLElement* elem,
588  rtps::DiscoveryProtocol_t* e,
589  uint8_t ident);
590 
591  RTPS_DllAPI static XMLP_ret getXMLList(
592  tinyxml2::XMLElement* elem,
593  eprosima::fastdds::rtps::RemoteServerList_t& list,
594  uint8_t ident);
595 
596  RTPS_DllAPI static XMLP_ret getXMLEnum(
597  tinyxml2::XMLElement* elem,
598  rtps::ParticipantFilteringFlags_t* e,
599  uint8_t ident);
600 
601  RTPS_DllAPI static XMLP_ret getXMLRemoteServer(
602  tinyxml2::XMLElement* elem,
603  eprosima::fastdds::rtps::RemoteServerAttributes& server,
604  uint8_t ident);
605 
606  RTPS_DllAPI static XMLP_ret getXMLString(
607  tinyxml2::XMLElement* elem,
608  std::string* s,
609  uint8_t ident);
610 
611  RTPS_DllAPI static XMLP_ret getXMLTransports(
612  tinyxml2::XMLElement* elem,
613  std::vector<std::shared_ptr<fastdds::rtps::TransportDescriptorInterface>>& transports,
614  uint8_t ident);
615 
617  tinyxml2::XMLElement* elem,
618  DisablePositiveACKsQosPolicy& disablePositiveAcks,
619  uint8_t ident);
620 
621  RTPS_DllAPI static XMLP_ret getXMLDataSharingQos(
622  tinyxml2::XMLElement* elem,
623  DataSharingQosPolicy& data_sharing,
624  uint8_t ident);
625 
626  RTPS_DllAPI static XMLP_ret getXMLguidPrefix(
627  tinyxml2::XMLElement* elem,
628  rtps::GuidPrefix_t& prefix,
629  uint8_t ident);
630 
632  tinyxml2::XMLElement* elem,
633  PublisherAttributes& publisher,
634  uint8_t ident);
635 
637  tinyxml2::XMLElement* elem,
638  SubscriberAttributes& subscriber,
639  uint8_t ident);
640 
641  RTPS_DllAPI static XMLP_ret getXMLBuiltinTransports(
642  tinyxml2::XMLElement* elem,
643  eprosima::fastdds::rtps::BuiltinTransports* bt,
644  uint8_t ident);
645 
646 private:
647 
648  static std::mutex collections_mtx_;
649  static std::set<std::string> flow_controller_descriptor_names_;
650 };
651 
652 } // namespace xmlparser
653 } // namespace fastrtps
654 } // namespace eprosima
655 
656 #endif // ifndef XML_PARSER_H_
Class PublisherAttributes, used by the user to define the attributes of a Publisher.
Definition: PublisherAttributes.h:41
Class SubscriberAttributes, used by the user to define the attributes of a Subscriber.
Definition: SubscriberAttributes.h:39
Class TopicAttributes, used by the user to define the attributes of the topic associated with a Publi...
Definition: TopicAttributes.h:36
Definition: DynamicTypeBuilder.h:32
Class XMLParser, used to load XML data.
Definition: XMLParser.h:92
static RTPS_DllAPI XMLP_ret getXMLSendBuffersAllocationAttributes(tinyxml2::XMLElement *elem, rtps::SendBuffersAllocationAttributes &allocation, uint8_t ident)
static RTPS_DllAPI XMLP_ret parseXMLSubscriberProf(tinyxml2::XMLElement *p_root, BaseNode &rootNode)
static RTPS_DllAPI XMLP_ret loadXML(const char *data, size_t length, up_base_node_t &root)
Load a XML data from buffer.
static RTPS_DllAPI XMLP_ret fillDataNode(tinyxml2::XMLElement *node, DataNode< TopicAttributes > &topic_node)
static RTPS_DllAPI XMLP_ret loadXML(tinyxml2::XMLDocument &xmlDoc, up_base_node_t &root)
Load a XML node.
static RTPS_DllAPI XMLP_ret getXMLPortParameters(tinyxml2::XMLElement *elem, rtps::PortParameters &port, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLWriterTimes(tinyxml2::XMLElement *elem, rtps::WriterTimes &times, uint8_t ident)
static RTPS_DllAPI XMLP_ret parseXMLCommonTCPTransportData(tinyxml2::XMLElement *p_root, sp_transport_t p_transport)
static RTPS_DllAPI XMLP_ret getXMLEnum(tinyxml2::XMLElement *elem, rtps::ParticipantFilteringFlags_t *e, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLBool(tinyxml2::XMLElement *elem, bool *b, uint8_t ident)
static RTPS_DllAPI XMLP_ret parseXMLPublisherProf(tinyxml2::XMLElement *p_root, BaseNode &rootNode)
static RTPS_DllAPI XMLP_ret getXMLPresentationQos(tinyxml2::XMLElement *elem, PresentationQosPolicy &presentation, uint8_t ident)
static RTPS_DllAPI XMLP_ret parseLogConfig(tinyxml2::XMLElement *p_root)
Load a XML log node and parses it.
static RTPS_DllAPI XMLP_ret parseXMLTransportsProf(tinyxml2::XMLElement *p_root)
static RTPS_DllAPI XMLP_ret getXMLInitialAnnouncementsConfig(tinyxml2::XMLElement *elem, rtps::InitialAnnouncementConfig &config, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLDurabilityQos(tinyxml2::XMLElement *elem, DurabilityQosPolicy &durability, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLDiscoverySettings(tinyxml2::XMLElement *elem, rtps::DiscoverySettings &settings, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLLocatorList(tinyxml2::XMLElement *elem, rtps::LocatorList_t &locatorList, uint8_t ident)
static RTPS_DllAPI XMLP_ret parseXMLBitsetDynamicType(tinyxml2::XMLElement *p_root)
static RTPS_DllAPI XMLP_ret getXMLGroupDataQos(tinyxml2::XMLElement *elem, GroupDataQosPolicy &groupData, uint8_t ident)
static XMLP_ret getXMLExternalLocatorList(tinyxml2::XMLElement *elem, fastdds::rtps::ExternalLocators &external_locators, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLInt(tinyxml2::XMLElement *elem, int *i, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLDeadlineQos(tinyxml2::XMLElement *elem, DeadlineQosPolicy &deadline, uint8_t ident)
static RTPS_DllAPI p_dynamictypebuilder_t parseXMLMemberDynamicType(tinyxml2::XMLElement *p_root, p_dynamictypebuilder_t p_dynamictype, types::MemberId mId)
static RTPS_DllAPI XMLP_ret clear()
Clears the private static collections.
static RTPS_DllAPI XMLP_ret parseXMLProfiles(tinyxml2::XMLElement &profiles, up_base_node_t &root)
static RTPS_DllAPI XMLP_ret parseXMLUnionDynamicType(tinyxml2::XMLElement *p_root)
static RTPS_DllAPI XMLP_ret getXMLUint(tinyxml2::XMLElement *elem, uint64_t *ui64, uint8_t ident)
static RTPS_DllAPI XMLP_ret parseXMLReplierProf(tinyxml2::XMLElement *p_root, BaseNode &rootNode)
static RTPS_DllAPI XMLP_ret parseXMLParticipantProf(tinyxml2::XMLElement *p_root, BaseNode &rootNode)
static RTPS_DllAPI XMLP_ret getXMLOctetVector(tinyxml2::XMLElement *elem, std::vector< rtps::octet > &octet_vector, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLEnum(tinyxml2::XMLElement *elem, rtps::DiscoveryProtocol_t *e, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLRemoteLocatorsAllocationAttributes(tinyxml2::XMLElement *elem, rtps::RemoteLocatorsAllocationAttributes &allocation, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLContainerAllocationConfig(tinyxml2::XMLElement *elem, ResourceLimitedContainerConfig &resourceLimitsQos, uint8_t ident)
static RTPS_DllAPI XMLP_ret parseXMLBitvalueDynamicType(tinyxml2::XMLElement *p_root, p_dynamictypebuilder_t p_dynamictype, uint16_t &position)
static RTPS_DllAPI XMLP_ret getXMLLocatorTCPv6(tinyxml2::XMLElement *elem, rtps::Locator_t &locator, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLEnum(tinyxml2::XMLElement *elem, fastrtps::IntraprocessDeliveryType *e, uint8_t ident)
static RTPS_DllAPI XMLP_ret loadDefaultXMLFile(up_base_node_t &root)
Load the default XML file.
static RTPS_DllAPI XMLP_ret getXMLTopicDataQos(tinyxml2::XMLElement *elem, TopicDataQosPolicy &topicData, uint8_t ident)
static RTPS_DllAPI XMLP_ret loadXMLDynamicTypes(tinyxml2::XMLElement &types)
Load a XML node.
static RTPS_DllAPI XMLP_ret getXMLPartitionQos(tinyxml2::XMLElement *elem, PartitionQosPolicy &partition, uint8_t ident)
static RTPS_DllAPI XMLP_ret parseXMLTypes(tinyxml2::XMLElement *p_root)
static RTPS_DllAPI XMLP_ret getXMLLocatorTCPv4(tinyxml2::XMLElement *elem, rtps::Locator_t &locator, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLLocatorUDPv4(tinyxml2::XMLElement *elem, rtps::Locator_t &locator, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLBuiltinTransports(tinyxml2::XMLElement *elem, eprosima::fastdds::rtps::BuiltinTransports *bt, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLDuration(tinyxml2::XMLElement *elem, Duration_t &duration, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLThroughputController(tinyxml2::XMLElement *elem, rtps::ThroughputControllerDescriptor &throughputController, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLLocatorUDPv6(tinyxml2::XMLElement *elem, rtps::Locator_t &locator, uint8_t ident)
static RTPS_DllAPI XMLP_ret fillDataNode(tinyxml2::XMLElement *p_profile, DataNode< PublisherAttributes > &publisher_node)
static RTPS_DllAPI XMLP_ret parse_tls_config(tinyxml2::XMLElement *p_root, sp_transport_t tcp_transport)
static RTPS_DllAPI XMLP_ret getXMLUserDataQos(tinyxml2::XMLElement *elem, UserDataQosPolicy &userData, uint8_t ident)
static RTPS_DllAPI void addAllAttributes(tinyxml2::XMLElement *p_profile, DataNode< T > &node)
static RTPS_DllAPI XMLP_ret fillDataNode(tinyxml2::XMLElement *node, DataNode< RequesterAttributes > &requester_node)
static RTPS_DllAPI XMLP_ret fillDataNode(tinyxml2::XMLElement *p_profile, DataNode< SubscriberAttributes > &subscriber_node)
static RTPS_DllAPI XMLP_ret parseXMLEnumDynamicType(tinyxml2::XMLElement *p_root)
static RTPS_DllAPI XMLP_ret getXMLDurabilityServiceQos(tinyxml2::XMLElement *elem, DurabilityServiceQosPolicy &durabilityService, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLSubscriberAttributes(tinyxml2::XMLElement *elem, SubscriberAttributes &subscriber, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLPublishModeQos(tinyxml2::XMLElement *elem, PublishModeQosPolicy &publishMode, uint8_t ident)
static RTPS_DllAPI XMLP_ret parseXMLStructDynamicType(tinyxml2::XMLElement *p_root)
static XMLP_ret loadXML(const std::string &filename, up_base_node_t &root, bool is_default)
Load a XML file.
static RTPS_DllAPI XMLP_ret getXMLTopicAttributes(tinyxml2::XMLElement *elem, TopicAttributes &topic, uint8_t ident)
static RTPS_DllAPI XMLP_ret parseXMLCommonTransportData(tinyxml2::XMLElement *p_root, sp_transport_t p_transport)
static RTPS_DllAPI XMLP_ret getXMLDisablePositiveAcksQos(tinyxml2::XMLElement *elem, DisablePositiveACKsQosPolicy &disablePositiveAcks, uint8_t ident)
static RTPS_DllAPI XMLP_ret parseProfiles(tinyxml2::XMLElement *p_root, BaseNode &profilesNode)
static RTPS_DllAPI XMLP_ret parseXMLTransportData(tinyxml2::XMLElement *p_root)
static RTPS_DllAPI XMLP_ret getXMLBuiltinAttributes(tinyxml2::XMLElement *elem, rtps::BuiltinAttributes &builtin, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLLifespanQos(tinyxml2::XMLElement *elem, LifespanQosPolicy &lifespan, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLUint(tinyxml2::XMLElement *elem, uint16_t *ui16, uint8_t ident)
static RTPS_DllAPI XMLP_ret parseXML(tinyxml2::XMLDocument &xmlDoc, up_base_node_t &root)
static RTPS_DllAPI XMLP_ret parseXMLDynamicType(tinyxml2::XMLElement *p_root)
static RTPS_DllAPI XMLP_ret getXMLLivelinessQos(tinyxml2::XMLElement *elem, LivelinessQosPolicy &liveliness, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLHistoryMemoryPolicy(tinyxml2::XMLElement *elem, rtps::MemoryManagementPolicy_t &historyMemoryPolicy, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLWriterQosPolicies(tinyxml2::XMLElement *elem, WriterQos &qos, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLPublisherAttributes(tinyxml2::XMLElement *elem, PublisherAttributes &publisher, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLPropertiesPolicy(tinyxml2::XMLElement *elem, rtps::PropertyPolicy &propertiesPolicy, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLHistoryQosPolicy(tinyxml2::XMLElement *elem, HistoryQosPolicy &historyQos, uint8_t ident)
static RTPS_DllAPI XMLP_ret fillDataNode(tinyxml2::XMLElement *node, DataNode< ReplierAttributes > &replier_node)
static RTPS_DllAPI XMLP_ret getXMLDestinationOrderQos(tinyxml2::XMLElement *elem, DestinationOrderQosPolicy &destinationOrder, uint8_t ident)
static RTPS_DllAPI XMLP_ret parseXMLAliasDynamicType(tinyxml2::XMLElement *p_root)
static RTPS_DllAPI XMLP_ret getXMLFlowControllerDescriptorList(tinyxml2::XMLElement *elem, FlowControllerDescriptorList &flow_controller_descriptor_list, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLDataSharingQos(tinyxml2::XMLElement *elem, DataSharingQosPolicy &data_sharing, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLString(tinyxml2::XMLElement *elem, std::string *s, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLOwnershipQos(tinyxml2::XMLElement *elem, OwnershipQosPolicy &ownership, uint8_t ident)
static RTPS_DllAPI XMLP_ret parseXMLRequesterProf(tinyxml2::XMLElement *p_root, BaseNode &rootNode)
static RTPS_DllAPI XMLP_ret getXMLTimeBasedFilterQos(tinyxml2::XMLElement *elem, TimeBasedFilterQosPolicy &timeBasedFilter, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLReaderQosPolicies(tinyxml2::XMLElement *elem, ReaderQos &qos, uint8_t ident)
static RTPS_DllAPI p_dynamictypebuilder_t parseXMLBitfieldDynamicType(tinyxml2::XMLElement *p_root, p_dynamictypebuilder_t p_dynamictype, types::MemberId mId, uint16_t &position)
static RTPS_DllAPI XMLP_ret getXMLReliabilityQos(tinyxml2::XMLElement *elem, ReliabilityQosPolicy &reliability, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLLatencyBudgetQos(tinyxml2::XMLElement *elem, LatencyBudgetQosPolicy &latencyBudget, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLList(tinyxml2::XMLElement *elem, eprosima::fastdds::rtps::RemoteServerList_t &list, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLResourceLimitsQos(tinyxml2::XMLElement *elem, ResourceLimitsQosPolicy &resourceLimitsQos, uint8_t ident)
static RTPS_DllAPI XMLP_ret parseXMLBitmaskDynamicType(tinyxml2::XMLElement *p_root)
static RTPS_DllAPI XMLP_ret parseXMLTopicData(tinyxml2::XMLElement *p_root, BaseNode &rootNode)
static RTPS_DllAPI XMLP_ret parseDynamicTypes(tinyxml2::XMLElement *p_root)
static RTPS_DllAPI XMLP_ret getXMLReaderTimes(tinyxml2::XMLElement *elem, rtps::ReaderTimes &times, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLguidPrefix(tinyxml2::XMLElement *elem, rtps::GuidPrefix_t &prefix, uint8_t ident)
static RTPS_DllAPI XMLP_ret parseXMLConsumer(tinyxml2::XMLElement &consumer)
Load a XML consumer node and parses it.
static RTPS_DllAPI p_dynamictypebuilder_t parseXMLMemberDynamicType(tinyxml2::XMLElement *p_root, p_dynamictypebuilder_t p_dynamictype, types::MemberId mId, const std::string &values)
static RTPS_DllAPI XMLP_ret getXMLParticipantAllocationAttributes(tinyxml2::XMLElement *elem, rtps::RTPSParticipantAllocationAttributes &allocation, uint8_t ident)
static RTPS_DllAPI XMLP_ret parseXMLLibrarySettings(tinyxml2::XMLElement *p_root)
static RTPS_DllAPI XMLP_ret parseXMLDynamicTypes(tinyxml2::XMLElement &types)
static RTPS_DllAPI XMLP_ret fillDataNode(tinyxml2::XMLElement *p_profile, DataNode< ParticipantAttributes > &participant_node)
static RTPS_DllAPI XMLP_ret getXMLOwnershipStrengthQos(tinyxml2::XMLElement *elem, OwnershipStrengthQosPolicy &ownershipStrength, uint8_t ident)
static RTPS_DllAPI XMLP_ret getXMLUint(tinyxml2::XMLElement *elem, unsigned int *ui, uint8_t ident)
static RTPS_DllAPI XMLP_ret loadXML(const std::string &filename, up_base_node_t &root)
Load a XML file.
static RTPS_DllAPI XMLP_ret parseXMLCommonSharedMemTransportData(tinyxml2::XMLElement *p_root, sp_transport_t p_transport)
static RTPS_DllAPI XMLP_ret getXMLTransports(tinyxml2::XMLElement *elem, std::vector< std::shared_ptr< fastdds::rtps::TransportDescriptorInterface >> &transports, uint8_t ident)
static RTPS_DllAPI XMLP_ret loadXMLProfiles(tinyxml2::XMLElement &profiles, up_base_node_t &root)
Load a XML node.
std::vector< std::shared_ptr< fastdds::rtps::FlowControllerDescriptor > > FlowControllerDescriptorList
Definition: XMLParser.h:96
static RTPS_DllAPI XMLP_ret getXMLRemoteServer(tinyxml2::XMLElement *elem, eprosima::fastdds::rtps::RemoteServerAttributes &server, uint8_t ident)
XMLP_ret
Enum class XMLP_ret, used to provide a strongly typed result from the operations within this module.
Definition: XMLParserCommon.h:27
uint32_t MemberId
Definition: TypesBase.h:284
std::unique_ptr< node_publisher_t > up_node_publisher_t
Definition: XMLParser.h:65
std::unique_ptr< node_subscriber_t > up_node_subscriber_t
Definition: XMLParser.h:70
std::map< std::string, std::string > node_att_map_t
Definition: XMLParser.h:48
DataNode< ReplierAttributes > node_replier_t
Definition: XMLParser.h:83
DataNode< SubscriberAttributes > node_subscriber_t
Definition: XMLParser.h:68
std::unique_ptr< ReplierAttributes > up_replier_t
Definition: XMLParser.h:82
std::unique_ptr< SubscriberAttributes > up_subscriber_t
Definition: XMLParser.h:67
node_publisher_t * p_node_publisher_t
Definition: XMLParser.h:64
DataNode< TopicAttributes > node_topic_t
Definition: XMLParser.h:73
std::map< std::string, sp_transport_t > sp_transport_map_t
Definition: XMLParser.h:53
node_subscriber_t * p_node_subscriber_t
Definition: XMLParser.h:69
std::shared_ptr< fastdds::rtps::TransportDescriptorInterface > sp_transport_t
Definition: XMLParser.h:52
types::DynamicTypeBuilder * p_dynamictypebuilder_t
Definition: XMLParser.h:54
std::unique_ptr< node_topic_t > up_node_topic_t
Definition: XMLParser.h:75
DataNode< PublisherAttributes > node_publisher_t
Definition: XMLParser.h:63
node_replier_t * p_node_replier_t
Definition: XMLParser.h:84
std::unique_ptr< ParticipantAttributes > up_participant_t
Definition: XMLParser.h:57
node_att_map_t::const_iterator node_att_map_cit_t
Definition: XMLParser.h:50
std::unique_ptr< TopicAttributes > up_topic_t
Definition: XMLParser.h:72
DataNode< RequesterAttributes > node_requester_t
Definition: XMLParser.h:78
DataNode< ParticipantAttributes > node_participant_t
Definition: XMLParser.h:58
std::map< std::string, p_dynamictypebuilder_t > p_dynamictype_map_t
Definition: XMLParser.h:55
std::unique_ptr< node_requester_t > up_node_requester_t
Definition: XMLParser.h:80
node_att_map_t::iterator node_att_map_it_t
Definition: XMLParser.h:49
std::unique_ptr< RequesterAttributes > up_requester_t
Definition: XMLParser.h:77
std::unique_ptr< BaseNode > up_base_node_t
Definition: XMLParser.h:44
std::unique_ptr< node_participant_t > up_node_participant_t
Definition: XMLParser.h:60
node_topic_t * p_node_topic_t
Definition: XMLParser.h:74
std::vector< up_base_node_t > up_base_node_vector_t
Definition: XMLParser.h:47
node_participant_t * p_node_participant_t
Definition: XMLParser.h:59
node_requester_t * p_node_requester_t
Definition: XMLParser.h:79
std::unique_ptr< PublisherAttributes > up_publisher_t
Definition: XMLParser.h:62
std::unique_ptr< node_replier_t > up_node_replier_t
Definition: XMLParser.h:85
fastdds::dds::DataSharingQosPolicy DataSharingQosPolicy
Definition: QosPolicies.h:97
IntraprocessDeliveryType
Definition: LibrarySettingsAttributes.h:27
fastdds::dds::PresentationQosPolicy PresentationQosPolicy
Definition: QosPolicies.h:72
fastdds::dds::LatencyBudgetQosPolicy LatencyBudgetQosPolicy
Definition: QosPolicies.h:42
fastdds::dds::UserDataQosPolicy UserDataQosPolicy
Definition: QosPolicies.h:74
fastdds::dds::LifespanQosPolicy LifespanQosPolicy
Definition: QosPolicies.h:83
fastdds::dds::ReaderQos ReaderQos
Definition: ReaderQos.h:30
fastdds::dds::DisablePositiveACKsQosPolicy DisablePositiveACKsQosPolicy
Definition: QosPolicies.h:96
fastdds::dds::DurabilityServiceQosPolicy DurabilityServiceQosPolicy
Definition: QosPolicies.h:82
fastdds::dds::OwnershipQosPolicy OwnershipQosPolicy
Definition: QosPolicies.h:57
fastdds::dds::PublishModeQosPolicy PublishModeQosPolicy
Definition: QosPolicies.h:89
fastdds::dds::LivelinessQosPolicy LivelinessQosPolicy
Definition: QosPolicies.h:49
fastdds::dds::OwnershipStrengthQosPolicy OwnershipStrengthQosPolicy
Definition: QosPolicies.h:84
fastdds::dds::TopicDataQosPolicy TopicDataQosPolicy
Definition: QosPolicies.h:75
fastdds::dds::GroupDataQosPolicy GroupDataQosPolicy
Definition: QosPolicies.h:76
fastdds::dds::TimeBasedFilterQosPolicy TimeBasedFilterQosPolicy
Definition: QosPolicies.h:64
fastdds::dds::DeadlineQosPolicy DeadlineQosPolicy
Definition: QosPolicies.h:41
fastdds::dds::WriterQos WriterQos
Definition: WriterQos.h:30
fastdds::dds::DestinationOrderQosPolicy DestinationOrderQosPolicy
Definition: QosPolicies.h:63
fastdds::dds::PartitionQosPolicy PartitionQosPolicy
Definition: QosPolicies.h:73
fastdds::dds::ResourceLimitsQosPolicy ResourceLimitsQosPolicy
Definition: QosPolicies.h:81
fastdds::dds::DurabilityQosPolicy DurabilityQosPolicy
Definition: QosPolicies.h:40
fastdds::dds::ReliabilityQosPolicy ReliabilityQosPolicy
Definition: QosPolicies.h:53
fastdds::dds::HistoryQosPolicy HistoryQosPolicy
Definition: QosPolicies.h:80
eProsima namespace.
Definition: LibrarySettingsAttributes.h:23
Definition: XMLEndpointParser.h:36
Specifies the configuration of a resource limited collection.
Definition: ResourceLimitedContainerConfig.hpp:36