diff options
author | Johnny Willemsen <jwillemsen@remedy.nl> | 2009-12-01 10:59:36 +0000 |
---|---|---|
committer | Johnny Willemsen <jwillemsen@remedy.nl> | 2009-12-01 10:59:36 +0000 |
commit | 094c67d5596335d8e0cddce3dd78e2e26fc98bfe (patch) | |
tree | a28b397f53f6ddb8c97d3508a8867aef277fb271 | |
parent | 7e0446be02689f1bbec8ad79aa1185bc67bcc92a (diff) | |
download | ATCD-094c67d5596335d8e0cddce3dd78e2e26fc98bfe.tar.gz |
Tue Dec 01 10:59:37 UTC 2009 Johnny Willemsen <jwillemsen@remedy.nl>
* connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp
* connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp
* connectors/dds4ccm/impl/ndds/DataReaderListener_T.h
* connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp
* connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.h
* connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp
* connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp
* connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.h
StateListener
9 files changed, 281 insertions, 27 deletions
diff --git a/CIAO/ChangeLog b/CIAO/ChangeLog index 9441ad5b177..1974b5e88b2 100644 --- a/CIAO/ChangeLog +++ b/CIAO/ChangeLog @@ -1,3 +1,15 @@ +Tue Dec 01 10:59:37 UTC 2009 Johnny Willemsen <jwillemsen@remedy.nl> + + * connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.h + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.h + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.h + StateListener + Tue Dec 01 09:42:37 UTC 2009 Johnny Willemsen <jwillemsen@remedy.nl> * connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp b/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp index 011ca5c71ae..bf79bbb94ee 100644 --- a/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp +++ b/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp @@ -136,6 +136,7 @@ DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE>::configure_port_dds_listen (void) this->__listen_datareaderlistener = new ::CIAO::DDS4CCM::RTI::DataReaderListener_T <DDS_TYPE, CCM_TYPE> ( this->context_, + this->context_->get_connection_error_listener (), this->context_->get_connection_push_consumer_data_listener (), this->context_->get_connection_pull_consumer_status (), this->listen_datalistener_mode_, diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp b/CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp index 86cfaca2845..e3fdee9f903 100644 --- a/CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp +++ b/CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp @@ -1,10 +1,12 @@ // -*- C++ -*- // $Id$ -#include "dds4ccm/impl/ndds/DataReaderListener_T.h" +#include "dds4ccm/impl/ndds/DataReaderStateListener_T.h" #include "dds4ccm/impl/ndds/DataWriterListener_T.h" #include "dds4ccm/impl/ndds/Updater_T.h" #include "dds4ccm/impl/ndds/Reader_T.h" +#include "dds4ccm/impl/ndds/PublisherListener_T.h" +#include "dds4ccm/impl/ndds/SubscriberListener_T.h" #include "dds4ccm/impl/ndds/DataListenerControl.h" #include "ciao/Logger/Log_Macros.h" @@ -122,8 +124,8 @@ void DDS_State_Connector_T<DDS_TYPE, CCM_TYPE>::configuration_complete (void) { DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE>::configuration_complete (); -// this->configure_port_dds_listen (); -// this->configure_port_dds_write (); + this->configure_port_dds_update (); + this->configure_port_dds_listen (); } template <typename DDS_TYPE, typename CCM_TYPE> @@ -155,27 +157,33 @@ DDS_State_Connector_T<DDS_TYPE, CCM_TYPE>::configure_port_dds_update (void) { if (CORBA::is_nil (this->supplier_publisher_.in ())) { + this->publisher_listener_ = new ::CIAO::DDS4CCM::RTI::PublisherListener_T + <DDS_TYPE, CCM_TYPE> ( + this->context_->get_connection_error_listener ()); + if (this->library_name_ && this->profile_name_) { this->supplier_publisher_ = this->domain_participant_-> create_publisher_with_profile ( this->library_name_, this->profile_name_, - 0, - 0); + this->publisher_listener_.in (), + DDS_STATUS_MASK_NONE); } else { ::DDS::PublisherQos pqos; - this->supplier_publisher_ = this->domain_participant_->create_publisher (pqos, - 0, - 0); + this->supplier_publisher_ = + this->domain_participant_->create_publisher ( + pqos, + this->publisher_listener_.in (), + DDS_STATUS_MASK_NONE); } } if (CORBA::is_nil (this->observable_data_.in ())) { - this->supplier_listener_ = new ::CIAO::DDS4CCM::DataWriterListener_T + this->datawriter_listener_ = new ::CIAO::DDS4CCM::DataWriterListener_T <DDS_TYPE, CCM_TYPE> ( this->context_, this->listen_datalistener_mode_, @@ -188,7 +196,7 @@ DDS_State_Connector_T<DDS_TYPE, CCM_TYPE>::configure_port_dds_update (void) this->topic_.in (), this->library_name_, this->profile_name_, - this->supplier_listener_.in (), + this->datawriter_listener_.in (), DDS_OFFERED_DEADLINE_MISSED_STATUS | DDS_OFFERED_INCOMPATIBLE_QOS_STATUS | DDS_LIVELINESS_LOST_STATUS | DDS_PUBLICATION_MATCHED_STATUS); this->observable_data_ = ::DDS::CCM_DataWriter::_narrow (dwv_tmp); } @@ -199,7 +207,7 @@ DDS_State_Connector_T<DDS_TYPE, CCM_TYPE>::configure_port_dds_update (void) create_datawriter ( this->topic_.in (), dwqos, - this->supplier_listener_.in (), + this->datawriter_listener_.in (), DDS_OFFERED_DEADLINE_MISSED_STATUS | DDS_OFFERED_INCOMPATIBLE_QOS_STATUS | DDS_LIVELINESS_LOST_STATUS | DDS_PUBLICATION_MATCHED_STATUS); this->observable_data_ = ::DDS::CCM_DataWriter::_narrow (dwv_tmp); } @@ -222,31 +230,37 @@ DDS_State_Connector_T<DDS_TYPE, CCM_TYPE>::configure_port_dds_listen (void) { if (CORBA::is_nil (this->listen_subscriber_.in ())) { + this->subscriber_listener_ = new ::CIAO::DDS4CCM::RTI::SubscriberListener_T + <DDS_TYPE, CCM_TYPE> ( + this->context_->get_connection_error_listener ()); + if (this->library_name_ && this->profile_name_) { this->listen_subscriber_ = this->domain_participant_-> create_subscriber_with_profile ( this->library_name_, this->profile_name_, - 0, - 0); + this->subscriber_listener_.in (), + DDS_STATUS_MASK_NONE); } else { ::DDS::SubscriberQos sqos; this->listen_subscriber_ = this->domain_participant_-> - create_subscriber (sqos, - 0, - 0); + create_subscriber ( + sqos, + this->subscriber_listener_.in (), + DDS_STATUS_MASK_NONE); } } if (CORBA::is_nil (this->__listen_datareaderlistener.in ())) { - this->__listen_datareaderlistener = new ::CIAO::DDS4CCM::RTI::DataReaderListener_T + this->__listen_datareaderlistener = new ::CIAO::DDS4CCM::RTI::DataReaderStateListener_T <DDS_TYPE, CCM_TYPE> ( this->context_, - this->context_->get_connection_push_observer_data_listener (), + this->context_->get_connection_error_listener (), + this->context_->get_connection_push_state_observer_data_listener (), this->context_->get_connection_pull_observer_status (), this->listen_datalistener_mode_, this->listen_datalistener_max_delivered_data_); diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.h b/CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.h index 639dfe9fb7f..76a847d424f 100644 --- a/CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.h +++ b/CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.h @@ -67,7 +67,7 @@ private: void configure_port_dds_update (void); ::DDS::Publisher_var supplier_publisher_; ::DDS::CCM_DataWriter_var observable_data_; - ::DDS::DataWriterListener_var supplier_listener_; + ::DDS::DataWriterListener_var datawriter_listener_; // @from DDS_Listen void configure_port_dds_listen (void); @@ -76,6 +76,8 @@ private: ::DDS::Subscriber_var listen_subscriber_; ::DDS::DataReader_var push_consumer_data_; ::DDS::DataReaderListener_var __listen_datareaderlistener; + ::DDS::SubscriberListener_var subscriber_listener_; + ::DDS::PublisherListener_var publisher_listener_; // @from DDS_Getter ::DDS::DataReader_var pull_consumer_fresh_data_; diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp b/CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp index ac65898a3ae..65d31b0cd60 100644 --- a/CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp +++ b/CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp @@ -10,8 +10,8 @@ template <typename DDS_TYPE, typename CCM_TYPE> CIAO::DDS4CCM::RTI::DataReaderHandler_T<DDS_TYPE, CCM_TYPE>::DataReaderHandler_T ( typename CCM_TYPE::listener_type::_ptr_type listener, typename DDS_TYPE::data_reader * reader) - : listener_ (CCM_TYPE::listener_type::_duplicate (listener)), - reader_ (reader) + : reader_ (reader), + listener_ (CCM_TYPE::listener_type::_duplicate (listener)), { } diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp b/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp index 177a8c0347d..2a21423048f 100644 --- a/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp +++ b/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp @@ -10,11 +10,13 @@ template <typename DDS_TYPE, typename CCM_TYPE> CIAO::DDS4CCM::RTI::DataReaderListener_T<DDS_TYPE, CCM_TYPE>::DataReaderListener_T ( typename CCM_TYPE::context_type::_ptr_type context, + CCM_DDS::ConnectorStatusListener_ptr error_listener, typename CCM_TYPE::listener_type::_ptr_type listener, ::CCM_DDS::PortStatusListener_ptr port_status_listener, ACE_Atomic_Op <TAO_SYNCH_MUTEX, ::CCM_DDS::ListenerMode> &mode, ACE_Atomic_Op <TAO_SYNCH_MUTEX, ::CCM_DDS::DataNumber_t> &max_delivered_data) : context_ (CCM_TYPE::context_type::_duplicate (context)), + error_listener_ (::CCM_DDS::ConnectorStatusListener::_duplicate (error_listener)), listener_ (CCM_TYPE::listener_type::_duplicate (listener)), mode_ (mode), max_delivered_data_ (max_delivered_data) @@ -22,7 +24,6 @@ CIAO::DDS4CCM::RTI::DataReaderListener_T<DDS_TYPE, CCM_TYPE>::DataReaderListener CIAO_TRACE ("CIAO::DDS4CCM::RTI::DataReaderListener_T::DataReaderListener_T"); this->info_out_portstatus_ = ::CCM_DDS::PortStatusListener::_duplicate (port_status_listener); - this->info_out_connector_status_ = this->context_->get_connection_error_listener (); } // Implementation skeleton destructor @@ -112,9 +113,9 @@ CIAO::DDS4CCM::RTI::DataReaderListener_T<DDS_TYPE, CCM_TYPE>::on_requested_incom { try { - if (!CORBA::is_nil (this->info_out_connector_status_)) + if (!CORBA::is_nil (this->error_listener_)) { - this->info_out_connector_status_->on_requested_incompatible_qos (the_reader, status); + this->error_listener_->on_requested_incompatible_qos (the_reader, status); } } catch (...) diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener_T.h b/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener_T.h index 05b3f81529b..657ba30d50e 100644 --- a/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener_T.h +++ b/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener_T.h @@ -25,8 +25,9 @@ namespace CIAO /// Constructor DataReaderListener_T ( typename CCM_TYPE::context_type::_ptr_type context, + ::CCM_DDS::ConnectorStatusListener_ptr error_listener, typename CCM_TYPE::listener_type::_ptr_type listener, - CCM_DDS::PortStatusListener_ptr port_status_listener, + ::CCM_DDS::PortStatusListener_ptr port_status_listener, ACE_Atomic_Op <TAO_SYNCH_MUTEX, ::CCM_DDS::ListenerMode> &mode, ACE_Atomic_Op <TAO_SYNCH_MUTEX, ::CCM_DDS::DataNumber_t> &max_delivered_data); @@ -46,8 +47,7 @@ namespace CIAO private: typename CCM_TYPE::context_type::_var_type context_; - - ::CCM_DDS::ConnectorStatusListener_var info_out_connector_status_; + ::CCM_DDS::ConnectorStatusListener_var error_listener_; ::CCM_DDS::PortStatusListener_var info_out_portstatus_; typename CCM_TYPE::listener_type::_var_type listener_; ACE_Atomic_Op <TAO_SYNCH_MUTEX, ::CCM_DDS::ListenerMode> &mode_; diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp b/CIAO/connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp new file mode 100644 index 00000000000..986a38d0ad9 --- /dev/null +++ b/CIAO/connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp @@ -0,0 +1,164 @@ +// $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" + +// Implementation skeleton constructor +template <typename DDS_TYPE, typename CCM_TYPE> +CIAO::DDS4CCM::RTI::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE>::DataReaderStateListener_T ( + typename CCM_TYPE::context_type::_ptr_type context, + CCM_DDS::ConnectorStatusListener_ptr error_listener, + typename CCM_TYPE::statelistener_type::_ptr_type listener, + ::CCM_DDS::PortStatusListener_ptr port_status_listener, + ACE_Atomic_Op <TAO_SYNCH_MUTEX, ::CCM_DDS::ListenerMode> &mode, + ACE_Atomic_Op <TAO_SYNCH_MUTEX, ::CCM_DDS::DataNumber_t> &max_delivered_data) + : context_ (CCM_TYPE::context_type::_duplicate (context)), + error_listener_ (::CCM_DDS::ConnectorStatusListener::_duplicate (error_listener)), + listener_ (CCM_TYPE::statelistener_type::_duplicate (listener)), + mode_ (mode), + max_delivered_data_ (max_delivered_data) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::DataReaderStateListener_T::DataReaderStateListener_T"); + this->info_out_portstatus_ = + ::CCM_DDS::PortStatusListener::_duplicate (port_status_listener); +} + +// Implementation skeleton destructor +template <typename DDS_TYPE, typename CCM_TYPE> +CIAO::DDS4CCM::RTI::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE>::~DataReaderStateListener_T (void) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::DataReaderStateListener_T::~DataReaderStateListener_T"); +} + +template <typename DDS_TYPE, typename CCM_TYPE> +void +CIAO::DDS4CCM::RTI::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE>::on_data_available(::DDS::DataReader *rdr) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::DataReaderStateListener_T::on_data_available"); + + if (this->mode_.value () == ::CCM_DDS::NOT_ENABLED) + return; + + ::CIAO::DDS4CCM::RTI::RTI_DataReader_i* rd = + dynamic_cast < ::CIAO::DDS4CCM::RTI::RTI_DataReader_i*>(rdr); + if (!rd) + { + /* In this specific case, this will never fail */ + ACE_ERROR ((LM_ERROR, ACE_TEXT ("DataReaderStateListener_T::dynamic_cast failed.\n"))); + return; + } + + typename DDS_TYPE::data_reader * reader = + dynamic_cast< typename DDS_TYPE::data_reader * > ((rd->get_datareader ())); + + if (!reader) + { + /* In this specific case, this will never fail */ + ACE_ERROR ((LM_ERROR, ACE_TEXT ("DataReaderStateListener_T::narrow failed.\n"))); + return; + } + + try + { + // Loop until there are messages available in the queue + for(;;) + { + typename DDS_TYPE::value_type instance; + ::DDS_SampleInfo sampleinfo; + ::DDS::ReturnCode_t const result = reader->take_next_sample(instance, + sampleinfo); + if (result == DDS_RETCODE_NO_DATA) + break; + else if (result != DDS_RETCODE_OK) + { + CIAO_ERROR ((LM_ERROR, ACE_TEXT ("Unable to take data from data reader, error %d.\n"), result)); + } + if (sampleinfo.instance_state == ::DDS_NOT_ALIVE_DISPOSED_INSTANCE_STATE) + { + ::CCM_DDS::ReadInfo empty; + empty <<= sampleinfo; + listener_->on_deletion (instance, empty); + } + else if (sampleinfo.view_state == ::DDS_NEW_VIEW_STATE) + { + ::CCM_DDS::ReadInfo empty; + empty <<= sampleinfo; + listener_->on_creation (instance, empty); + } + else if (sampleinfo.valid_data) + { + CIAO_DEBUG ((LM_DEBUG, ACE_TEXT ("DataReaderHandler_T : found valid data\n"))); + ::CCM_DDS::ReadInfo empty; + empty <<= sampleinfo; + listener_->on_one_update (instance, empty); + } + } + } + catch (...) + { + } +} + +template <typename DDS_TYPE, typename CCM_TYPE> +void +CIAO::DDS4CCM::RTI::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE>::on_requested_deadline_missed ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::RequestedDeadlineMissedStatus & status) +{ + try + { + if (!CORBA::is_nil (this->info_out_portstatus_)) + { + this->info_out_portstatus_->on_requested_deadline_missed (the_reader, status); + } + } + catch (...) + { + CIAO_DEBUG ((LM_DEBUG, ACE_TEXT ("DataReaderStateListener_T::on_requested_deadline_missed: ") + ACE_TEXT ("DDS Exception caught\n"))); + } +} + +template <typename DDS_TYPE, typename CCM_TYPE> +void +CIAO::DDS4CCM::RTI::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE>::on_sample_lost ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::SampleLostStatus & status) +{ + try + { + if (!CORBA::is_nil (this->info_out_portstatus_)) + { + this->info_out_portstatus_->on_sample_lost (the_reader, status); + } + } + catch (...) + { + CIAO_DEBUG ((LM_DEBUG, ACE_TEXT ("DataReaderStateListener_T::on_sample_lost: ") + ACE_TEXT ("DDS Exception caught\n"))); + } +} + +template <typename DDS_TYPE, typename CCM_TYPE> +void +CIAO::DDS4CCM::RTI::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE>::on_requested_incompatible_qos ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::RequestedIncompatibleQosStatus & status) +{ + try + { + if (!CORBA::is_nil (this->error_listener_)) + { + this->error_listener_->on_requested_incompatible_qos (the_reader, status); + } + } + catch (...) + { + CIAO_DEBUG ((LM_DEBUG, ACE_TEXT ("DataReaderStateListener_T::on_requested_incompatible_qos: ") + ACE_TEXT ("DDS Exception caught\n"))); + } +} + diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.h b/CIAO/connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.h new file mode 100644 index 00000000000..a08ee2306fa --- /dev/null +++ b/CIAO/connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.h @@ -0,0 +1,60 @@ +/** + * @author William R. Otte <wotte@dre.vanderbilt.edu> + * @author Johnny Willemsen <jwillemsen@remedy.nl> + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "ace/Copy_Disabled.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + template <typename DDS_TYPE, typename CCM_TYPE> + class DataReaderStateListener_T : + public ::DDS::DataReaderListener, + private ACE_Copy_Disabled + { + public: + /// Constructor + DataReaderStateListener_T ( + typename CCM_TYPE::context_type::_ptr_type context, + ::CCM_DDS::ConnectorStatusListener_ptr error_listener, + typename CCM_TYPE::statelistener_type::_ptr_type listener, + ::CCM_DDS::PortStatusListener_ptr port_status_listener, + ACE_Atomic_Op <TAO_SYNCH_MUTEX, ::CCM_DDS::ListenerMode> &mode, + ACE_Atomic_Op <TAO_SYNCH_MUTEX, ::CCM_DDS::DataNumber_t> &max_delivered_data); + + /// Destructor + virtual ~DataReaderStateListener_T (void); + + virtual void on_data_available( ::DDS::DataReader *rdr); + + virtual void on_requested_deadline_missed (::DDS::DataReader_ptr the_reader, + const ::DDS::RequestedDeadlineMissedStatus & status); + + virtual void on_sample_lost (::DDS::DataReader_ptr the_reader, + const ::DDS::SampleLostStatus & status); + + virtual void on_requested_incompatible_qos (::DDS::DataReader_ptr the_reader, + const ::DDS::RequestedIncompatibleQosStatus & status); + + private: + typename CCM_TYPE::context_type::_var_type context_; + ::CCM_DDS::ConnectorStatusListener_var error_listener_; + ::CCM_DDS::PortStatusListener_var info_out_portstatus_; + typename CCM_TYPE::statelistener_type::_var_type listener_; + ACE_Atomic_Op <TAO_SYNCH_MUTEX, ::CCM_DDS::ListenerMode> &mode_; + ACE_Atomic_Op <TAO_SYNCH_MUTEX, ::CCM_DDS::DataNumber_t> &max_delivered_data_; + }; + } + } +} + +#include "dds4ccm/impl/ndds/DataReaderStateListener_T.cpp" |