15 namespace OpenDDS {
namespace FaceTSS {
namespace config {
18 const char* TOPIC_SECTION =
"topic";
19 const char* CONNECTION_SECTION =
"connection";
20 const char* DATAWRITER_QOS_SECTION =
"datawriterqos";
21 const char* DATAREADER_QOS_SECTION =
"datareaderqos";
22 const char* PUBLISHER_QOS_SECTION =
"publisherqos";
23 const char* SUBSCRIBER_QOS_SECTION =
"subscriberqos";
27 unsigned char participant_key[6];
28 participant_key[0] = (conn.participant_id_ >> 0) & 0xFF;
29 participant_key[1] = (conn.participant_id_ >> 8) & 0xFF;
30 participant_key[2] = (conn.participant_id_ >> 16) & 0xFF;
31 participant_key[3] = (conn.participant_id_ >> 24) & 0xFF;
32 participant_key[4] = 0;
33 participant_key[5] = 0;
35 unsigned char entity_key[3];
36 entity_key[0] = (conn.connection_id_ >> 0) & 0xFF;
37 entity_key[1] = (conn.connection_id_ >> 8) & 0xFF;
38 entity_key[2] = (conn.connection_id_ >> 16) & 0xFF;
40 unsigned char entity_kind = 0;
41 switch (conn.direction_) {
45 case FACE::DESTINATION:
48 case FACE::BI_DIRECTIONAL:
49 case FACE::ONE_WAY_REQUEST_SOURCE:
50 case FACE::ONE_WAY_REQUEST_DESTINATION:
51 case FACE::TWO_WAY_REQUEST_SYNCHRONOUS_SOURCE:
52 case FACE::TWO_WAY_REQUEST_SYNCHRONOUS_DESTINATION:
53 case FACE::TWO_WAY_REQUEST_REPLY_ASYNCHRONOUS_SOURCE:
54 case FACE::TWO_WAY_REQUEST_REPLY_ASYNCHRONOUS_DESTINATION:
55 case FACE::NOT_DEFINED_CONNECTION_DIRECTION_TYPE:
80 ACE_TEXT(
"(%P|%t) ERROR: Initialize() ")
81 ACE_TEXT(
"import_config () returned %d\n"),
117 p->second.apply_to(qos);
120 ACE_TEXT(
"(%P|%t) ERROR: Could not find datawriterqos/%s\n"),
130 p->second.apply_to(publisher_qos);
133 ACE_TEXT(
"(%P|%t) ERROR: Could not find publisherqos/%s\n"),
147 ACE_TEXT(
"(%P|%t) ERROR: Could not find config/%s\n"),
167 qos.user_data.value.length(3);
171 bool encapsulated_only =
false;
172 for (
CORBA::ULong i = 0; i < trans_info.length(); ++i) {
173 if (0 == std::strcmp(trans_info[i].transport_type,
"rtps_udp")) {
174 encapsulated_only =
true;
184 case FACE::DESTINATION:
192 p->second.apply_to(qos);
195 ACE_TEXT(
"(%P|%t) ERROR: Could not find datareaderqos/%s\n"),
205 p->second.apply_to(subscriber_qos);
208 ACE_TEXT(
"(%P|%t) ERROR: Could not find subscriberqos/%s\n"),
222 ACE_TEXT(
"(%P|%t) ERROR: Could not find transport/%s\n"),
242 qos.user_data.value.length(3);
252 case FACE::BI_DIRECTIONAL:
253 case FACE::ONE_WAY_REQUEST_SOURCE:
254 case FACE::ONE_WAY_REQUEST_DESTINATION:
255 case FACE::TWO_WAY_REQUEST_SYNCHRONOUS_SOURCE:
256 case FACE::TWO_WAY_REQUEST_SYNCHRONOUS_DESTINATION:
257 case FACE::TWO_WAY_REQUEST_REPLY_ASYNCHRONOUS_SOURCE:
258 case FACE::TWO_WAY_REQUEST_REPLY_ASYNCHRONOUS_DESTINATION:
259 case FACE::NOT_DEFINED_CONNECTION_DIRECTION_TYPE:
274 ConnectionMap::iterator result;
277 target = result->second;
287 TopicMap::iterator result;
290 target = result->second;
299 QosMap::iterator result;
352 const char* topic_name)
368 status = status || topic.
set(value_name.
c_str(), value.
c_str());
385 const char* connection_name)
401 status = status || connection.
set(value_name.
c_str(), value.
c_str());
418 const char* qos_name,
450 const char* section_type,
467 int section_index = 0;
476 section_name.
c_str(),
483 if (std::strcmp(section_type, CONNECTION_SECTION) == 0) {
485 }
else if (std::strcmp(section_type, TOPIC_SECTION) == 0) {
487 }
else if (std::strcmp(section_type, DATAWRITER_QOS_SECTION) == 0) {
490 }
else if (std::strcmp(section_type, DATAREADER_QOS_SECTION) == 0) {
493 }
else if (std::strcmp(section_type, PUBLISHER_QOS_SECTION) == 0) {
496 }
else if (std::strcmp(section_type, SUBSCRIBER_QOS_SECTION) == 0) {
int set(const char *name, const char *value)
#define TheTransportRegistry
DDS::SubscriberQos & subscriber_qos()
bool datawriter_qos_set() const
const char * c_str(void) const
const LogLevel::Value value
const char * datawriter_qos_name() const
virtual int get_string_value(const ACE_Configuration_Section_Key &key, const ACE_TCHAR *name, ACE_TString &value)
DDS::PublisherQos & publisher_qos()
virtual int import_config(const ACE_TCHAR *filename)
int find_qos(const ConnectionSettings &conn, QosSettings &target)
virtual const ACE_Configuration_Section_Key & root_section(void) const
int set_qos(QosLevel level, const char *name, const char *value)
sequence< TransportLocator > TransportLocatorSeq
static EntityId_t build_id(const unsigned char *entity_key, const unsigned char entity_kind)
virtual int enumerate_values(const ACE_Configuration_Section_Key &key, int index, ACE_TString &name, VALUETYPE &type)
void set_reader_effective_data_rep_qos(DDS::DataRepresentationIdSeq &qos)
bool datareader_qos_set() const
void set_writer_effective_data_rep_qos(DDS::DataRepresentationIdSeq &qos, bool cdr_encapsulated)
int parse_topic(ACE_Configuration_Heap &config, ACE_Configuration_Section_Key &key, const char *topic_name)
const octet ENTITYKIND_USER_READER_WITH_KEY
FACE::CONNECTION_DIRECTION_TYPE direction_
const char * publisher_qos_name() const
const char * subscriber_qos_name() const
bool subscriber_qos_set() const
static ConnectionMap connection_map_
void populate_locators(OpenDDS::DCPS::TransportLocatorSeq &trans_info) const
int parse_connection(ACE_Configuration_Heap &config, ACE_Configuration_Section_Key &key, const char *connection_name)
FACE::CONNECTION_ID_TYPE connection_id_
int parse_sections(ACE_Configuration_Heap &config, const char *section_type, bool required)
bool publisher_qos_set() const
char topic_name_[ALLOWABLE_NAME_LEN]
const octet ENTITYKIND_USER_WRITER_WITH_KEY
DDS::DataReaderQos & datareader_qos()
virtual int open_section(const ACE_Configuration_Section_Key &base, const ACE_TCHAR *sub_section, bool create, ACE_Configuration_Section_Key &result)
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
int find_connection(const char *name, ConnectionSettings &target)
int open(const ACE_TCHAR *file_name, void *base_address=ACE_DEFAULT_BASE_ADDR, size_t default_map_size=ACE_DEFAULT_CONFIG_SECTION_SIZE)
DDS::DataWriterQos & datawriter_qos()
virtual int enumerate_sections(const ACE_Configuration_Section_Key &key, int index, ACE_TString &name)
int find_topic(const char *name, TopicSettings &target)
int parse(const char *filename)
#define TheServiceParticipant
The Internal API and Implementation of OpenDDS.
int set(const char *name, const char *value)
static TopicMap topic_map_
int parse_qos(ACE_Configuration_Heap &config, ACE_Configuration_Section_Key &key, const char *qos_name, QosSettings::QosLevel level)
const char * datareader_qos_name() const
const char * config_name() const
static StaticDiscovery_rch instance()