OpenDDS  Snapshot(2023/04/07-19:43)
Public Member Functions | Private Types | Private Attributes | List of all members
OpenDDS::DCPS::QOS_XML_File_Handler Class Reference

#include <XML_File_Intf.h>

Inheritance diagram for OpenDDS::DCPS::QOS_XML_File_Handler:
Inheritance graph
[legend]
Collaboration diagram for OpenDDS::DCPS::QOS_XML_File_Handler:
Collaboration graph
[legend]

Public Member Functions

 QOS_XML_File_Handler (XML::XML_Error_Handler *error_handler=0)
 
 ~QOS_XML_File_Handler ()
 
DDS::ReturnCode_t init (const ACE_TCHAR *file)
 
void add_search_path (const ACE_TCHAR *environment, const ACE_TCHAR *relpath)
 
- Public Member Functions inherited from OpenDDS::DCPS::QOS_XML_Handler
 QOS_XML_Handler ()
 
 ~QOS_XML_Handler ()
 
DDS::ReturnCode_t get_datawriter_qos (::DDS::DataWriterQos &dw_qos, const ACE_TCHAR *profile_name, const ACE_TCHAR *topic_name)
 
DDS::ReturnCode_t get_datareader_qos (::DDS::DataReaderQos &dr_qos, const ACE_TCHAR *profile_name, const ACE_TCHAR *topic_name)
 
DDS::ReturnCode_t get_topic_qos (::DDS::TopicQos &tp_qos, const ACE_TCHAR *profile_name, const ACE_TCHAR *topic_name)
 
DDS::ReturnCode_t get_publisher_qos (::DDS::PublisherQos &pub_qos, const ACE_TCHAR *profile_name)
 
DDS::ReturnCode_t get_subscriber_qos (::DDS::SubscriberQos &sub_qos, const ACE_TCHAR *profile_name)
 
DDS::ReturnCode_t get_participant_qos (::DDS::DomainParticipantQos &sub_qos, const ACE_TCHAR *profile_name)
 
DDS::ReturnCode_t addQoSProfile (const dds::qosProfile &profile)
 
DDS::ReturnCode_t addQoSProfileSeq (const dds::qosProfile_seq &profiles)
 
DDS::ReturnCode_t delQoSProfile (const ACE_TCHAR *profileName)
 
size_t length () const
 
::dds::qosProfile getProfile (const ACE_TCHAR *profileName)
 
const ::dds::qosProfile_seq & get ()
 

Private Types

typedef XML::XML_Schema_Resolver< XML::Environment_Resolver > XML_RESOLVER
 
typedef XML::XML_Helper< XML_RESOLVER, XML::XML_Error_Handler > XML_HELPER
 

Private Attributes

XML_RESOLVERres_
 Schema resolver. More...
 
XML::XML_Error_Handler * eh_
 Error handler. More...
 
XML_HELPER helper_
 XML Helper. More...
 

Additional Inherited Members

- Protected Member Functions inherited from OpenDDS::DCPS::QOS_XML_Handler
::dds::qosProfile * get_profile (const ACE_TCHAR *profile_name)
 
- Protected Attributes inherited from OpenDDS::DCPS::QOS_XML_Handler
::dds::qosProfile_seq profiles_
 

Detailed Description

Definition at line 38 of file XML_File_Intf.h.

Member Typedef Documentation

◆ XML_HELPER

typedef XML::XML_Helper<XML_RESOLVER, XML::XML_Error_Handler> OpenDDS::DCPS::QOS_XML_File_Handler::XML_HELPER
private

Definition at line 67 of file XML_File_Intf.h.

◆ XML_RESOLVER

Definition at line 66 of file XML_File_Intf.h.

Constructor & Destructor Documentation

◆ QOS_XML_File_Handler()

OpenDDS::DCPS::QOS_XML_File_Handler::QOS_XML_File_Handler ( XML::XML_Error_Handler *  error_handler = 0)
explicit

Pass an optional which is called back when there are any errors parsing the input XML. The QOS_XML_File_Handler will assume ownership when a pointer is passed

Definition at line 12 of file XML_File_Intf.cpp.

12  :
15  eh_(error_handler ? error_handler : new XML::XML_Error_Handler()),
17  {
18  }
XML_HELPER helper_
XML Helper.
Definition: XML_File_Intf.h:76
XML_RESOLVER * res_
Schema resolver.
Definition: XML_File_Intf.h:70
XML::XML_Error_Handler * eh_
Error handler.
Definition: XML_File_Intf.h:73

◆ ~QOS_XML_File_Handler()

OpenDDS::DCPS::QOS_XML_File_Handler::~QOS_XML_File_Handler ( )

Definition at line 20 of file XML_File_Intf.cpp.

References eh_, and res_.

21  {
22  delete res_;
23  delete eh_;
24  }
XML_RESOLVER * res_
Schema resolver.
Definition: XML_File_Intf.h:70
XML::XML_Error_Handler * eh_
Error handler.
Definition: XML_File_Intf.h:73

Member Function Documentation

◆ add_search_path()

void OpenDDS::DCPS::QOS_XML_File_Handler::add_search_path ( const ACE_TCHAR environment,
const ACE_TCHAR relpath 
)

add_search_path will add a relative path to the XML parsing library. The XML parsing library will use this path to search for the schema

Definition at line 97 of file XML_File_Intf.cpp.

References helper_, and OPENDDS_END_VERSIONED_NAMESPACE_DECL.

Referenced by OpenDDS::DCPS::QOS_XML_Loader::init().

99  {
100  helper_.get_resolver().get_resolver().add_path(environment, relpath);
101  }
XML_HELPER helper_
XML Helper.
Definition: XML_File_Intf.h:76

◆ init()

DDS::ReturnCode_t OpenDDS::DCPS::QOS_XML_File_Handler::init ( const ACE_TCHAR file)

The init method will open the file and will validate it against the schema. It returns RETCODE_ERROR when any error occurs during parsing

Definition at line 27 of file XML_File_Intf.cpp.

References CORBA::Exception::_info(), ACE_DEBUG, ACE_ERROR, ACE_TEXT(), ACE_String_Base< char >::c_str(), OpenDDS::DCPS::DCPS_debug_level, dds::reader::dds(), helper_, LM_ERROR, LM_TRACE, OpenDDS::DCPS::QOS_XML_Handler::profiles_, DDS::RETCODE_ERROR, and DDS::RETCODE_OK.

Referenced by OpenDDS::DCPS::QOS_XML_Loader::init().

28  {
30  try
31  {
32  if (!helper_.is_initialized())
33  {
34  ACE_ERROR((LM_ERROR,
35  ACE_TEXT("QOS_XML_File_Handler::init - ")
36  ACE_TEXT("Unable to initialize XML_Helper.\n")));
37  return DDS::RETCODE_ERROR;
38  }
39 
40  if (DCPS_debug_level > 9)
41  {
42  ACE_DEBUG((LM_TRACE,
43  ACE_TEXT("QOS_XML_File_Handler::init - ")
44  ACE_TEXT("Constructing DOM\n")));
45  }
46 
47  XERCES_CPP_NAMESPACE::DOMDocument *dom =
48  helper_.create_dom(file);
49 
50  if (dom == 0)
51  {
52  if (DCPS_debug_level > 1)
53  {
54  ACE_ERROR((LM_ERROR,
55  ACE_TEXT("QOS_XML_File_Handler::init - ")
56  ACE_TEXT("Failed to open file %s\n"),
57  file));
58  }
59  return DDS::RETCODE_ERROR;
60  }
61 
62  XERCES_CPP_NAMESPACE::DOMElement *profile_dom = dom->getDocumentElement();
63 
64  if (DCPS_debug_level > 9)
65  {
66  ACE_DEBUG((LM_TRACE,
67  ACE_TEXT("QOS_XML_File_Handler::init - ")
68  ACE_TEXT("DOMElement pointer: %u\n"), profile_dom));
69  }
70 
71  ID_Map::TSS_ID_Map* TSS_ID_Map(ACE_Singleton<ID_Map::TSS_ID_Map, ACE_Null_Mutex>::instance());
72  (*TSS_ID_Map)->reset();
73 
74  this->profiles_ = dds::reader::dds(dom);
75  }
76  catch (const CORBA::Exception &ex)
77  {
78  ACE_ERROR((LM_ERROR,
79  ACE_TEXT("QOS_XML_File_Handler::init - ")
80  ACE_TEXT("Caught CORBA exception whilst parsing XML <%s> into IDL: %C\n"),
81  file,
82  ex._info().c_str()));
83  retcode = DDS::RETCODE_ERROR;
84  }
85  catch (...)
86  {
87  ACE_ERROR((LM_ERROR,
88  ACE_TEXT("QOS_XML_File_Handler::init - ")
89  ACE_TEXT("Unexpected exception whilst parsing XML <%s> into IDL.\n"),
90  file));
91  retcode = DDS::RETCODE_ERROR;
92  }
93  return retcode;
94  }
#define ACE_DEBUG(X)
#define ACE_ERROR(X)
const char * c_str(void) const
const ReturnCode_t RETCODE_OK
const ReturnCode_t RETCODE_ERROR
XML_HELPER helper_
XML Helper.
Definition: XML_File_Intf.h:76
virtual ACE_CString _info(void) const=0
OpenDDS_Dcps_Export unsigned int DCPS_debug_level
Definition: debug.cpp:30
ACE_TEXT("TCP_Factory")
::dds::qosProfile_seq profiles_
Definition: XML_Intf.h:116
::dds::qosProfile_seq dds(xercesc::DOMDocument const *d)
Definition: dds_qos.cpp:7398

Member Data Documentation

◆ eh_

XML::XML_Error_Handler* OpenDDS::DCPS::QOS_XML_File_Handler::eh_
private

Error handler.

Definition at line 73 of file XML_File_Intf.h.

Referenced by ~QOS_XML_File_Handler().

◆ helper_

XML_HELPER OpenDDS::DCPS::QOS_XML_File_Handler::helper_
private

XML Helper.

Definition at line 76 of file XML_File_Intf.h.

Referenced by add_search_path(), and init().

◆ res_

XML_RESOLVER* OpenDDS::DCPS::QOS_XML_File_Handler::res_
private

Schema resolver.

Definition at line 70 of file XML_File_Intf.h.

Referenced by ~QOS_XML_File_Handler().


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