diff options
Diffstat (limited to 'CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp')
-rw-r--r-- | CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp b/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp new file mode 100644 index 00000000000..a5cad0cbda6 --- /dev/null +++ b/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp @@ -0,0 +1,169 @@ +// -*- C++ -*- +// $Id$ + +#include "dds4ccm/impl/ndds/DataReaderListener_T.h" +#include "dds4ccm/impl/ndds/DataWriterListener_T.h" +#include "dds4ccm/impl/ndds/Writer_T.h" +#include "dds4ccm/impl/ndds/Getter_T.h" +#include "dds4ccm/impl/ndds/Reader_T.h" +#include "dds4ccm/impl/ndds/DataListenerControl_T.h" +#include "dds4ccm/impl/ndds/PortStatusListener_T.h" + +#include "dds4ccm/impl/logger/Log_Macros.h" + +template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED> +DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::DDS_Event_Connector_T (void) : + DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>() +{ +} + +template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED> +DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::~DDS_Event_Connector_T (void) +{ +} + +template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED> +typename CCM_TYPE::writer_type::_ptr_type +DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_supplier_data (void) +{ + DDS4CCM_TRACE ("DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_supplier_data"); + + return this->supplier_.get_data (); +} + +template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED> +::DDS::CCM_DataWriter_ptr +DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_supplier_dds_entity (void) +{ + DDS4CCM_TRACE ("DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_supplier_dds_entity"); + + return this->supplier_.get_dds_entity (); +} + +template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED> +typename CCM_TYPE::getter_type::_ptr_type +DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_pull_consumer_fresh_data (void) +{ + DDS4CCM_TRACE ("DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_pull_consumer_fresh_data"); + + return this->pull_consumer_.get_fresh_data (); +} + +template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED> +typename CCM_TYPE::reader_type::_ptr_type +DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_push_consumer_data (void) +{ + DDS4CCM_TRACE ("DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_push_consumer_data"); + + return this->push_consumer_.get_data (); +} + +template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED> +typename CCM_TYPE::reader_type::_ptr_type +DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_pull_consumer_data (void) +{ + DDS4CCM_TRACE ("DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_pull_consumer_data"); + + return this->pull_consumer_.get_data (); +} + +template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED> +::CCM_DDS::CCM_DataListenerControl_ptr +DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_push_consumer_data_control (void) +{ + DDS4CCM_TRACE ("DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_push_consumer_data_control"); + + return this->push_consumer_.get_data_control (); +} + +template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED> +::DDS::CCM_DataReader_ptr +DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_pull_consumer_dds_entity (void) +{ + DDS4CCM_TRACE ("DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_pull_consumer_dds_entity"); + + return this->pull_consumer_.get_dds_entity (); +} + +template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED> +::DDS::CCM_DataReader_ptr +DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_push_consumer_dds_entity (void) +{ + DDS4CCM_TRACE ("DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_push_consumer_dds_entity"); + + return this->push_consumer_.get_dds_entity (); +} + +template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED> +void +DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::configuration_complete (void) +{ + DDS4CCM_TRACE ("DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::configuration_complete"); + + DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::configuration_complete (); + + this->push_consumer_.configuration_complete ( + this->topic_.in (), + this->subscriber_.in (), + this->library_name_, + this->profile_name_); + + this->supplier_.configuration_complete( + this->topic_.in (), + this->publisher_.in (), + this->library_name_, + this->profile_name_); + + this->pull_consumer_.configuration_complete ( + this->topic_.in (), + this->subscriber_.in (), + this->library_name_, + this->profile_name_); +} + +template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED> +void +DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::ccm_activate (void) +{ + DDS4CCM_TRACE ("DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::ccm_activate"); + ACE_Reactor* reactor = 0; +#if defined (CIAO_DDS4CCM_CONTEXT_SWITCH) && (CIAO_DDS4CCM_CONTEXT_SWITCH == 1) + reactor = this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor (); +#endif + DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_activate (reactor); + + this->push_consumer_.activate ( + this->context_->get_connection_push_consumer_data_listener (), + this->context_->get_connection_push_consumer_status (), + reactor); + + this->supplier_.activate (); + + this->pull_consumer_.activate ( + this->context_->get_connection_pull_consumer_status (), + reactor); +} + +template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED> +void +DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::ccm_passivate (void) +{ + DDS4CCM_TRACE ("DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::ccm_passivate"); + + this->push_consumer_.passivate (); + this->supplier_.passivate (); + this->pull_consumer_.passivate (); + DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_passivate (); +} + +template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED> +void +DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::ccm_remove (void) +{ + DDS4CCM_TRACE ("DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::ccm_remove"); + + this->push_consumer_.remove (this->subscriber_.in ()); + this->supplier_.remove (this->publisher_.in ()); + this->pull_consumer_.remove (this->subscriber_.in ()); + DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_remove (); +} |