summaryrefslogtreecommitdiff
path: root/CIAO/connectors/dds4ccm/impl/ndds/TopicListener.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'CIAO/connectors/dds4ccm/impl/ndds/TopicListener.cpp')
-rw-r--r--CIAO/connectors/dds4ccm/impl/ndds/TopicListener.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/CIAO/connectors/dds4ccm/impl/ndds/TopicListener.cpp b/CIAO/connectors/dds4ccm/impl/ndds/TopicListener.cpp
new file mode 100644
index 00000000000..0a2b0f673a8
--- /dev/null
+++ b/CIAO/connectors/dds4ccm/impl/ndds/TopicListener.cpp
@@ -0,0 +1,48 @@
+// $Id$
+
+#include "TopicListener.h"
+#include "Topic.h"
+#include "InconsistentTopicStatus.h"
+
+#include "dds4ccm/idl/dds4ccm_BaseC.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ CCM_DDS_TopicListener_i::CCM_DDS_TopicListener_i (::DDS::TopicListener_ptr p)
+ : impl_ (::DDS::TopicListener::_duplicate (p))
+ {
+ }
+
+ CCM_DDS_TopicListener_i::~CCM_DDS_TopicListener_i (void)
+ {
+ }
+
+ void
+ CCM_DDS_TopicListener_i::on_inconsistent_topic (
+ ::DDSTopic* the_topic,
+ const ::DDS_InconsistentTopicStatus & status)
+ {
+ ::DDS::Topic_var dds_topic = ::DDS::Topic::_nil ();
+ ACE_NEW (dds_topic,
+ CCM_DDS_Topic_i (the_topic));
+#if defined (CIAO_DDS4CCM_NDDS) && (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::InconsistentTopicStatus ddsstatus;
+ ddsstatus <<= status;
+ this->impl_->on_inconsistent_topic (dds_topic.in (), ddsstatus);
+#else
+ this->impl_->on_inconsistent_topic (dds_topic.in (), status);
+#endif
+ }
+
+ ::DDS::TopicListener_ptr
+ CCM_DDS_TopicListener_i::get_topiclistener (void)
+ {
+ return ::DDS::TopicListener::_duplicate (this->impl_.in ());
+ }
+ }
+}
+