summaryrefslogtreecommitdiff
path: root/modules/CIAO/connectors/dds4ccm/impl/ndds/PortStatusListener_T.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/CIAO/connectors/dds4ccm/impl/ndds/PortStatusListener_T.cpp')
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/PortStatusListener_T.cpp85
1 files changed, 85 insertions, 0 deletions
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/PortStatusListener_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/PortStatusListener_T.cpp
new file mode 100644
index 00000000000..d07d6ac18e5
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/PortStatusListener_T.cpp
@@ -0,0 +1,85 @@
+// $Id$
+#include "dds4ccm/impl/ndds/Utils.h"
+
+#include "dds4ccm/impl/ndds/DataReader.h"
+#include "ciao/Logger/Log_Macros.h"
+#include "dds4ccm/impl/ndds/DataReaderHandler_T.h"
+#include "tao/ORB_Core.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+CIAO::DDS4CCM::RTI::PortStatusListener_T<DDS_TYPE, CCM_TYPE>::PortStatusListener_T (
+ ::CCM_DDS::PortStatusListener_ptr port_status_listener)
+ : port_status_listener_ (::CCM_DDS::PortStatusListener::_duplicate (port_status_listener))
+{
+ CIAO_TRACE ("CIAO::DDS4CCM::RTI::PortStatusListener_T::PortStatusListener_T");
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+CIAO::DDS4CCM::RTI::PortStatusListener_T<DDS_TYPE, CCM_TYPE>::~PortStatusListener_T (void)
+{
+ CIAO_TRACE ("CIAO::DDS4CCM::RTI::PortStatusListener_T::~PortStatusListener_T");
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::RTI::PortStatusListener_T<DDS_TYPE, CCM_TYPE>::on_requested_deadline_missed (
+ ::DDS::DataReader_ptr the_reader,
+ const ::DDS::RequestedDeadlineMissedStatus & status)
+{
+ CIAO_TRACE ("CIAO::DDS4CCM::RTI::PortStatusListener_T::on_requested_deadline_missed");
+
+ try
+ {
+ if (!CORBA::is_nil (this->port_status_listener_))
+ {
+ this->port_status_listener_->on_requested_deadline_missed (the_reader, status);
+ }
+ else
+ {
+ CIAO_DEBUG (6, (LM_DEBUG,
+ ACE_TEXT ("PortStatusListener_T::on_requested_deadline_missed: ")
+ ACE_TEXT ("No portstatus listener installed\n")));
+ }
+ }
+ catch (...)
+ {
+ CIAO_DEBUG (6, (LM_DEBUG, ACE_TEXT ("PortStatusListener_T::on_requested_deadline_missed: ")
+ ACE_TEXT ("DDS Exception caught\n")));
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::RTI::PortStatusListener_T<DDS_TYPE, CCM_TYPE>::on_sample_lost (
+ ::DDS::DataReader_ptr the_reader,
+ const ::DDS::SampleLostStatus & status)
+{
+ CIAO_TRACE ("CIAO::DDS4CCM::RTI::PortStatusListener_T::on_sample_lost");
+
+ try
+ {
+ if (!CORBA::is_nil (this->port_status_listener_))
+ {
+ this->port_status_listener_->on_sample_lost (the_reader, status);
+ }
+ else
+ {
+ CIAO_DEBUG (6, (LM_DEBUG,
+ ACE_TEXT ("PortStatusListener_T::on_sample_lost: ")
+ ACE_TEXT ("No portstatus listener installed\n")));
+ }
+ }
+ catch (...)
+ {
+ CIAO_DEBUG (6, (LM_DEBUG, ACE_TEXT ("PortStatusListener_T::on_sample_lost: ")
+ ACE_TEXT ("DDS Exception caught\n")));
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+::DDS::StatusMask
+CIAO::DDS4CCM::RTI::PortStatusListener_T<DDS_TYPE, CCM_TYPE>::get_mask (void)
+{
+ return DDS_REQUESTED_DEADLINE_MISSED_STATUS |
+ DDS_SAMPLE_LOST_STATUS;
+}