9 #include "DCPS_IR_Topic_Description.h"
11 #include "DCPS_IR_Subscription.h"
12 #include "DCPS_IR_Publication.h"
14 #include "DCPS_IR_Topic.h"
15 #include "DCPS_IR_Domain.h"
17 #include "dds/DCPS/DCPS_Utils.h"
19 #include "tao/debug.h"
21 #include "dds/DCPS/RepoIdConverter.h"
27 const char* dataTypeName)
29 dataTypeName_(dataTypeName),
58 ACE_TEXT(
"(%P|%t) DCPS_IR_Topic_Description::add_subscription_reference: ")
59 ACE_TEXT(
"topic description %C added subscription %C at %x\n"),
61 std::string(converter).c_str(),
70 ACE_TEXT(
"(%P|%t) ERROR: DCPS_IR_Topic_Description::add_subscription_reference: ")
71 ACE_TEXT(
"topic description %C attempt to re-add subscription %C.\n"),
73 std::string(converter).c_str()));
80 ACE_TEXT(
"(%P|%t) ERROR: DCPS_IR_Topic_Description::add_subscription_reference: ")
81 ACE_TEXT(
"topic description %C failed to add subscription %C.\n"),
83 std::string(converter).c_str()));
98 ACE_TEXT(
"(%P|%t) DCPS_IR_Topic_Description::remove_subscription_reference: ")
99 ACE_TEXT(
"topic description %C removed subscription %C.\n"),
101 std::string(converter).c_str()));
107 ACE_TEXT(
"(%P|%t) ERROR: DCPS_IR_Topic_Description::remove_subscription_reference: ")
108 ACE_TEXT(
"topic description %C failed to remove subscription %C.\n"),
110 std::string(converter).c_str()));
126 ACE_TEXT(
"(%P|%t) DCPS_IR_Topic_Description::add_topic: ")
127 ACE_TEXT(
"topic description %C added topic %C at %x.\n"),
129 std::string(converter).c_str(),
139 ACE_TEXT(
"(%P|%t) WARNING: DCPS_IR_Topic_Description::add_topic: ")
140 ACE_TEXT(
"topic description %C attempt to re-add topic %C.\n"),
142 std::string(converter).c_str()));
149 ACE_TEXT(
"(%P|%t) ERROR: DCPS_IR_Topic_Description::add_topic: ")
150 ACE_TEXT(
"topic description %C failed to add topic %C.\n"),
152 std::string(converter).c_str()));
168 ACE_TEXT(
"(%P|%t) DCPS_IR_Topic_Description::remove_topic: ")
169 ACE_TEXT(
"topic description %C removed topic %C.\n"),
171 std::string(converter).c_str()));
177 ACE_TEXT(
"(%P|%t) ERROR: DCPS_IR_Topic_Description::remove_topic: ")
178 ACE_TEXT(
"topic description failed to remove topic %C.\n"),
180 std::string(converter).c_str()));
197 ACE_TEXT(
"(%P|%t) DCPS_IR_Topic_Description::get_first_topic: ")
198 ACE_TEXT(
"topic description %C first topic %C.\n"),
200 std::string(converter).c_str()));
216 while (iter != end) {
217 subscription = *iter;
246 while (iter != end) {
261 ACE_TEXT(
"(%P|%t) DCPS_IR_Topic_Description::try_associate_subscription: ")
262 ACE_TEXT(
"topic description %C has %d incompatible publications ")
263 ACE_TEXT(
"with subscription %C.\n"),
266 std::string(converter).c_str()));
279 subscription->
get_id())) {
284 ACE_TEXT(
"(%P|%t) DCPS_IR_Topic_Description::try_associate: ")
285 ACE_TEXT(
"topic description %C publication %C ignores subscription %C.\n"),
287 std::string(pub_converter).c_str(),
288 std::string(sub_converter).c_str()));
299 ACE_TEXT(
"(%P|%t) DCPS_IR_Topic_Description::try_associate: ")
300 ACE_TEXT(
"topic description %C subscription %C ignores publication %C.\n"),
302 std::string(pub_converter).c_str(),
303 std::string(sub_converter).c_str()));
311 ACE_TEXT(
"(%P|%t) DCPS_IR_Topic_Description::try_associate: ")
312 ACE_TEXT(
"topic description %C checking compatibility of ")
313 ACE_TEXT(
"publication %C with subscription %C.\n"),
315 std::string(pub_converter).c_str(),
316 std::string(sub_converter).c_str()));
346 ACE_TEXT(
"(%P|%t) DCPS_IR_Topic_Description::associate: ")
347 ACE_TEXT(
"topic description %C associating ")
348 ACE_TEXT(
"publication %C with subscription %C.\n"),
350 std::string(pub_converter).c_str(),
351 std::string(sub_converter).c_str()));
381 while (iter != end) {
395 while (iter != end) {
423 #if !defined (OPENDDS_INFOREPO_REDUCED_FOOTPRINT) 424 for (
int i=0; i < depth; i++)
426 std::string indent = str + prefix;
427 str +=
"DCPS_IR_Topic_Description [";
433 str += indent +
"Subscription References [ ";
439 str += std::string(sub_converter);
444 str += indent +
"Topics [ ";
450 str += std::string(top_converter);
454 #endif // !defined (OPENDDS_INFOREPO_REDUCED_FOOTPRINT) void update_incompatible_qos()
void try_associate_publication(DCPS_IR_Publication *publication)
const char * c_str(void) const
OpenDDS::DCPS::GUID_t get_participant_id()
ACE_CString dataTypeName_
DCPS_IR_Topic_Description(DCPS_IR_Domain *domain, const char *name, const char *dataTypeName)
OpenDDS::DCPS::GUID_t get_id()
Conversion processing and value testing utilities for DCPS Information Repository identifiers...
OpenDDS::DCPS::GUID_t get_id() const
CORBA::ULong get_number_topics() const
Returns the number of topics.
int add_topic(DCPS_IR_Topic *topic)
DCPS_IR_Topic_Set topics_
bool compatibleQOS(OpenDDS::DCPS::IncompatibleQosStatus *writerStatus, OpenDDS::DCPS::IncompatibleQosStatus *readerStatus, const OpenDDS::DCPS::TransportLocatorSeq &pubTLS, const OpenDDS::DCPS::TransportLocatorSeq &subTLS, DDS::DataWriterQos const *const writerQos, DDS::DataReaderQos const *const readerQos, DDS::PublisherQos const *const pubQos, DDS::SubscriberQos const *const subQos)
const char * get_name() const
OpenDDS::DCPS::GUID_t get_topic_id()
void publish_subscription_bit(DCPS_IR_Subscription *subscription)
Publish Subscription in the Subscription Built-In Topic.
DCPS_IR_Subscription_Set subscriptionRefs_
~DCPS_IR_Topic_Description()
void try_associate_subscription(DCPS_IR_Subscription *subscription)
OpenDDS::DCPS::IncompatibleQosStatus * get_incompatibleQosStatus()
const char * get_dataTypeName() const
OpenDDS::DCPS::TransportLocatorSeq get_transportLocatorSeq() const
int remove_subscription_reference(DCPS_IR_Subscription *subscription)
int add_associated_subscription(DCPS_IR_Subscription *sub, bool active)
void associate(DCPS_IR_Publication *publication, DCPS_IR_Subscription *subscription)
Associate the publication and subscription.
OpenDDS::DCPS::IncompatibleQosStatus * get_incompatibleQosStatus()
int remove_topic(DCPS_IR_Topic *topic)
Representative of a Topic.
int insert(const T &new_item)
CORBA::Boolean is_subscription_ignored(OpenDDS::DCPS::GUID_t partId, OpenDDS::DCPS::GUID_t topicId, OpenDDS::DCPS::GUID_t subId)
bool reevaluate_association(DCPS_IR_Subscription *subscription)
DDS::PublisherQos * get_publisher_qos()
OpenDDS::DCPS::GUID_t get_id()
void try_associate(DCPS_IR_Subscription *subscription)
DCPS_IR_Topic * get_first_topic()
Gets the first topic in the topic list.
long count_since_last_send
void reevaluate_associations(DCPS_IR_Publication *publication)
OpenDDS_Dcps_Export unsigned int DCPS_debug_level
CORBA::Boolean is_publication_ignored(OpenDDS::DCPS::GUID_t partId, OpenDDS::DCPS::GUID_t topicId, OpenDDS::DCPS::GUID_t pubId)
bool try_associate(DCPS_IR_Publication *publication, DCPS_IR_Subscription *subscription)
OpenDDS::DCPS::GUID_t get_participant_id()
int remove(const T &item)
const DDS::SubscriberQos * get_subscriber_qos()
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
int add_associated_publication(DCPS_IR_Publication *pub, bool active)
void reevaluate_associations(DCPS_IR_Subscription *subscription)
std::string dump_to_string(const std::string &prefix, int depth) const
Representative of a Subscription.
OpenDDS::DCPS::GUID_t get_topic_id()
Representation of a Domain in the system.
OpenDDS::DCPS::TransportLocatorSeq get_transportLocatorSeq() const
int add_subscription_reference(DCPS_IR_Subscription *subscription, bool associate=true)
void update_incompatible_qos()
Representative of a Publication.
DDS::DataWriterQos * get_datawriter_qos()
bool reevaluate_association(DCPS_IR_Publication *publication)
const DDS::DataReaderQos * get_datareader_qos()