00001 /** 00002 * @author Marcel Smit (msmit@remedy.nl) 00003 * 00004 * 00005 * Starting point for QOS XML parsing library. 00006 * 00007 */ 00008 #ifndef QOS_XML_LOADER_H 00009 #define QOS_XML_LOADER_H 00010 00011 #include "dds/DdsDcpsInfrastructureC.h" 00012 #include "dds/DCPS/QOS_XML_Handler/XML_QOS_Handler_Export.h" 00013 #include "dds/DCPS/QOS_XML_Handler/XML_File_Intf.h" 00014 00015 namespace OpenDDS { 00016 namespace DCPS { 00017 00018 class XML_QOS_Handler_Export QOS_XML_Loader 00019 { 00020 public: 00021 QOS_XML_Loader (void); 00022 ~QOS_XML_Loader (void); 00023 00024 /** 00025 * init 00026 * 00027 * qos_profile profile should be formatted like: 00028 * 00029 * qos_base_file_name_without_extension#profile_name_in_xml_file 00030 * 00031 * Init parses this string and will append ".xml" to 00032 * qos_base_file_name_without_extension. It'll than invoke 00033 * the init method on the XML_File_Intf class. 00034 * 00035 */ 00036 DDS::ReturnCode_t 00037 init (const ACE_TCHAR * qos_profile); 00038 00039 //@{ 00040 /** 00041 * 00042 * These methods have DDS QOS, a profile and a topic_name as 00043 * input. 00044 * 00045 * The DDS QOS is passed by reference. This library fills this 00046 * QOS and will return it to the callee. 00047 * 00048 * qos_profile should be the same profile string as the one 00049 * passed to the init method. 00050 * 00051 * If the profile name is correct, the methods will invoke 00052 * the corresponding method in the XML_File_Intf class. 00053 * 00054 */ 00055 DDS::ReturnCode_t 00056 get_datawriter_qos (DDS::DataWriterQos& dw_qos, 00057 const char *qos_profile, 00058 const char* topic_name); 00059 00060 DDS::ReturnCode_t 00061 get_datareader_qos (DDS::DataReaderQos& dr_qos, 00062 const char *qos_profile, 00063 const char* topic_name); 00064 00065 DDS::ReturnCode_t 00066 get_publisher_qos (DDS::PublisherQos& pub_qos, 00067 const char *qos_profile); 00068 00069 DDS::ReturnCode_t 00070 get_subscriber_qos (DDS::SubscriberQos& sub_qos, 00071 const char *qos_profile); 00072 00073 DDS::ReturnCode_t 00074 get_topic_qos (DDS::TopicQos& topic_qos, 00075 const char *qos_profile, 00076 const ACE_TCHAR *topic_name); 00077 00078 DDS::ReturnCode_t 00079 get_participant_qos (DDS::DomainParticipantQos& part_qos, 00080 const char *qos_profile); 00081 //@} 00082 00083 private: 00084 QOS_XML_File_Handler xml_file_; 00085 00086 char* get_xml_file_name (const char * qos_profile); 00087 char* get_profile_name (const char * qos_profile); 00088 }; 00089 } 00090 } 00091 #endif /* QOS_XML_LOADER_H */