diff options
Diffstat (limited to 'CIAO/connectors/dds4ccm/impl/DDS_Subscriber_Base_T.cpp')
-rw-r--r-- | CIAO/connectors/dds4ccm/impl/DDS_Subscriber_Base_T.cpp | 333 |
1 files changed, 0 insertions, 333 deletions
diff --git a/CIAO/connectors/dds4ccm/impl/DDS_Subscriber_Base_T.cpp b/CIAO/connectors/dds4ccm/impl/DDS_Subscriber_Base_T.cpp deleted file mode 100644 index ae258d83fa4..00000000000 --- a/CIAO/connectors/dds4ccm/impl/DDS_Subscriber_Base_T.cpp +++ /dev/null @@ -1,333 +0,0 @@ -// -*- C++ -*- -#include "dds4ccm/impl/logger/Log_Macros.h" - -#if (CIAO_DDS4CCM_OPENDDS==1) -#include "dds/DCPS/Marked_Default_Qos.h" -#endif - -template <typename CCM_TYPE, typename TYPED_DDS_READER, typename VALUE_TYPE, typename SEQ_VALUE_TYPE> -DDS_Subscriber_Base_T<CCM_TYPE, TYPED_DDS_READER, VALUE_TYPE, SEQ_VALUE_TYPE>::DDS_Subscriber_Base_T (void) - : configuration_complete_ (false) -{ -} - -template <typename CCM_TYPE, typename TYPED_DDS_READER, typename VALUE_TYPE, typename SEQ_VALUE_TYPE> -DDS_Subscriber_Base_T<CCM_TYPE, TYPED_DDS_READER, VALUE_TYPE, SEQ_VALUE_TYPE>::~DDS_Subscriber_Base_T (void) -{ -} - -template <typename CCM_TYPE, typename TYPED_DDS_READER, typename VALUE_TYPE, typename SEQ_VALUE_TYPE> -void -DDS_Subscriber_Base_T<CCM_TYPE, TYPED_DDS_READER, VALUE_TYPE, SEQ_VALUE_TYPE>::set_component ( - ::CORBA::Object_ptr component) -{ - this->dds_read_->_set_component (component); - this->ccm_data_reader_->_set_component (component); -} - -template <typename CCM_TYPE, typename TYPED_DDS_READER, typename VALUE_TYPE, typename SEQ_VALUE_TYPE> -void -DDS_Subscriber_Base_T<CCM_TYPE, TYPED_DDS_READER, VALUE_TYPE, SEQ_VALUE_TYPE>::configuration_complete ( - ::DDS::Topic_ptr topic, - ::DDS::Subscriber_ptr subscriber, - const char * qos_profile, - DDS_XML_QOS_PARSER_TYPE* qos_xml) -{ - DDS4CCM_TRACE ("DDS_Subscriber_Base_T<CCM_TYPE, TYPED_DDS_READER, VALUE_TYPE, SEQ_VALUE_TYPE>::configuration_complete"); - - this->configuration_complete_ = true; - - ::DDS::DataReader_var dr = this->dds_read_->get_dds_reader (); - if (::CORBA::is_nil (dr.in ())) - { - ::DDS::TopicDescription_var td; - - ::CCM_DDS::QueryFilter_var filter = this->cft_setting_->filter (); - if (ACE_OS::strlen (filter->expression.in ()) > 0) - { - ::DDS::ContentFilteredTopic_var cft = - this->cft_setting_->create_contentfilteredtopic (topic, subscriber); - if (CORBA::is_nil (cft.in ())) - { - DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_ERROR, (LM_ERROR, - "DDS_Subscriber_Base_T::configuration_complete: " - "Error creating ContentFilteredTopic.\n")); - throw ::CORBA::INTERNAL (); - } - td = ::DDS::TopicDescription::_narrow (cft.in ()); - } - else - { - td = ::DDS::TopicDescription::_narrow (topic); - } -#if (CIAO_DDS4CCM_NDDS==1) - if (qos_profile) - { - dr = subscriber->create_datareader_with_profile ( - td.in (), - qos_profile, - ::DDS::DataReaderListener::_nil (), - 0); - } - else -#endif - { - ::DDS::DataReaderQos drqos; - DDS::ReturnCode_t const retcode = - subscriber->get_default_datareader_qos (drqos); - - if (retcode != DDS::RETCODE_OK) - { - DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_ERROR, (LM_ERROR, DDS4CCM_INFO - "DDS_Subscriber_Base_T::configuration_complete - " - "Error: Unable to retrieve get_default_datareader_qos: <%C>\n", - ::CIAO::DDS4CCM::translate_retcode (retcode))); - throw ::CCM_DDS::InternalError (retcode, 0); - } - - if (qos_profile && qos_xml) - { - CORBA::String_var name = topic->get_name (); - DDS::ReturnCode_t const retcode_dr_qos = qos_xml->get_datareader_qos ( - drqos, - qos_profile, - name.in ()); - - if (retcode_dr_qos != DDS::RETCODE_OK) - { - DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_ERROR, (LM_ERROR, DDS4CCM_INFO - "DDS_Subscriber_Base_T::configuration_complete - " - "Error: Unable to retrieve datawriter QOS from XML: <%C>\n", - ::CIAO::DDS4CCM::translate_retcode (retcode_dr_qos))); - throw ::CCM_DDS::InternalError (retcode_dr_qos, 0); - } - } - -#if defined GEN_OSTREAM_OPS - if (DDS4CCM_debug_level >= DDS4CCM_LOG_LEVEL_DDS_STATUS) - { - std::stringstream output; - output << drqos; - std::string message = output.str(); - DDS4CCM_DEBUG (DDS4CCM_LOG_LEVEL_DDS_STATUS, (LM_INFO, DDS4CCM_INFO - ACE_TEXT ("DDS_Subscriber_Base_T::configuration_complete - ") - ACE_TEXT ("Using datareader QOS <%C>\n"), message.c_str())); - } -#endif - - dr = subscriber->create_datareader ( - td.in (), - drqos, - ::DDS::DataReaderListener::_nil (), - 0); - } - if (!::CORBA::is_nil (dr.in ())) - { - DDS4CCM_DEBUG (DDS4CCM_LOG_LEVEL_ACTION, (LM_TRACE, DDS4CCM_INFO - "DDS_Subscriber_Base_T::configuration_complete - " - "Created DataReader " - DDS_ENTITY_FORMAT_SPECIFIER - " using subscriber " - DDS_ENTITY_FORMAT_SPECIFIER - "\n", - DDS_ENTITY_LOG (dr.in ()), - DDS_ENTITY_LOG (subscriber))); - } - else - { - DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_DDS_NIL_RETURN, (LM_ERROR, DDS4CCM_INFO - "DDS_Subscriber_Base_T::configuration_complete - " - "Error: DDS returned a nil datareader.\n")); - throw ::CORBA::INTERNAL (); - } - - this->dds_read_->set_dds_reader (dr.in (), &this->condition_manager_); - this->ccm_data_reader_->set_dds_entity (dr.in ()); - this->condition_manager_.set_dds_entity (dr.in ()); - this->condition_manager_.init_readcondition (); - - DDS::ReturnCode_t const retcode = dr->enable (); - if (retcode != ::DDS::RETCODE_OK) - { - DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_ERROR, (LM_ERROR, DDS4CCM_INFO - "DDS_Subscriber_Base_T::configuration_complete - " - "Error: Unable to enable the datareader: <%C>.\n", - ::CIAO::DDS4CCM::translate_retcode (retcode))); - throw ::CORBA::INTERNAL (); - } - } -} - -template <typename CCM_TYPE, typename TYPED_DDS_READER, typename VALUE_TYPE, typename SEQ_VALUE_TYPE> -void -DDS_Subscriber_Base_T<CCM_TYPE, TYPED_DDS_READER, VALUE_TYPE, SEQ_VALUE_TYPE>::activate ( - ::CCM_DDS::PortStatusListener_ptr status, - ACE_Reactor* reactor) -{ - DDS4CCM_TRACE ("DDS_Subscriber_Base_T<CCM_TYPE, TYPED_DDS_READER, VALUE_TYPE, SEQ_VALUE_TYPE>::activate"); - - ::DDS::StatusMask const mask = - ::CIAO::DDS4CCM::PortStatusListener::get_mask (status); - - if (mask != 0) - { - if (::CORBA::is_nil (this->listener_.in ())) - { - ACE_NEW_THROW_EX (this->listener_, - ::CIAO::DDS4CCM::PortStatusListener (status, reactor), - ::CORBA::NO_MEMORY ()); - } - - ::DDS::DataReader_var dr = this->dds_read_->get_dds_reader (); - if (!::CORBA::is_nil (dr.in ())) - { - DDS::ReturnCode_t const retcode = dr->set_listener ( - this->listener_.in (), mask); - - if (retcode != ::DDS::RETCODE_OK) - { - DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_ERROR, (LM_ERROR, DDS4CCM_INFO - "DDS_Subscriber_Base_T::activate - " - "Error while setting the listener on the subscriber - <%C>\n", - ::CIAO::DDS4CCM::translate_retcode (retcode))); - throw ::CORBA::INTERNAL (); - } - } - else - { - DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_ERROR, (LM_ERROR, DDS4CCM_INFO - "DDS_Subscriber_Base_T::activate - " - "Error while retrieving the DataReader\n")); - throw ::CORBA::INTERNAL (); - } - } -} - -template <typename CCM_TYPE, typename TYPED_DDS_READER, typename VALUE_TYPE, typename SEQ_VALUE_TYPE> -void -DDS_Subscriber_Base_T<CCM_TYPE, TYPED_DDS_READER, VALUE_TYPE, SEQ_VALUE_TYPE>::passivate () -{ - DDS4CCM_TRACE ("DDS_Subscriber_Base_T<CCM_TYPE, TYPED_DDS_READER, VALUE_TYPE, SEQ_VALUE_TYPE>::passivate"); - - this->condition_manager_.passivate (); - ::DDS::DataReader_var reader = this->dds_read_->get_dds_reader (); - ::DDS::DataReaderListener_var reader_listener = this->listener_._retn (); - if (!::CORBA::is_nil (reader_listener.in ()) && - !::CORBA::is_nil (reader.in ()) ) - { - DDS4CCM_DEBUG (DDS4CCM_LOG_LEVEL_ACTION, (LM_DEBUG, DDS4CCM_INFO - "DDS_Subscriber_Base_T::passivate - " - "Setting the listener on the reader to nil\n")); - - DDS::ReturnCode_t const retcode = - reader->set_listener (::DDS::DataReaderListener::_nil (), 0); - if (retcode != ::DDS::RETCODE_OK) - { - DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_ERROR, (LM_ERROR, DDS4CCM_INFO - "DDS_Subscriber_Base_T::passivate - " - "Error while setting the listener on the reader - <%C>\n", - ::CIAO::DDS4CCM::translate_retcode (retcode))); - throw ::CORBA::INTERNAL (); - } - } -} - -template <typename CCM_TYPE, typename TYPED_DDS_READER, typename VALUE_TYPE, typename SEQ_VALUE_TYPE> -void -DDS_Subscriber_Base_T<CCM_TYPE, TYPED_DDS_READER, VALUE_TYPE, SEQ_VALUE_TYPE>::remove ( - ::DDS::Subscriber_ptr subscriber) -{ - DDS4CCM_TRACE ("DDS_Subscriber_Base_T<CCM_TYPE, TYPED_DDS_READER, VALUE_TYPE, SEQ_VALUE_TYPE>::remove"); - - ::DDS::DataReader_var dr = this->dds_read_->get_dds_reader (); - - this->condition_manager_.set_dds_entity (::DDS::DataReader::_nil ()); - this->dds_read_->set_dds_reader (::DDS::DataReader::_nil (), 0); - this->ccm_data_reader_->set_dds_entity (::DDS::DataReader::_nil ()); - - if (!::CORBA::is_nil (dr.in ())) - { - DDS4CCM_DEBUG (DDS4CCM_LOG_LEVEL_ACTION_STARTING, (LM_TRACE, DDS4CCM_INFO - "DDS_Subscriber_Base_T::remove - " - "Going to delete DataReader " - DDS_ENTITY_FORMAT_SPECIFIER - " from subscriber " - DDS_ENTITY_FORMAT_SPECIFIER - "\n", - DDS_ENTITY_LOG (dr.in ()), - DDS_ENTITY_LOG (subscriber))); - - DDS::ReturnCode_t const retval = - subscriber->delete_datareader (dr.in ()); - - if (retval != ::DDS::RETCODE_OK) - { - DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_ERROR, (LM_ERROR, DDS4CCM_INFO - ACE_TEXT ("DDS_Subscriber_Base_T::remove - ") - ACE_TEXT ("Unable to delete DataReader: <%C>\n"), - ::CIAO::DDS4CCM::translate_retcode (retval))); - throw ::CORBA::INTERNAL (); - } - else - { - DDS4CCM_DEBUG (DDS4CCM_LOG_LEVEL_DDS_STATUS, (LM_INFO, DDS4CCM_INFO - "DDS_Subscriber_Base_T::remove - " - "Deleted DataReader\n")); - } - } - - dr = ::DDS::DataReader::_nil (); - this->cft_setting_->delete_contentfilteredtopic (subscriber); -} - -template <typename CCM_TYPE, typename TYPED_DDS_READER, typename VALUE_TYPE, typename SEQ_VALUE_TYPE> -typename CCM_TYPE::data_type::_ptr_type -DDS_Subscriber_Base_T<CCM_TYPE, TYPED_DDS_READER, VALUE_TYPE, SEQ_VALUE_TYPE>::get_data (void) -{ - DDS4CCM_TRACE ("DDS_Subscriber_Base_T<CCM_TYPE, TYPED_DDS_READER, VALUE_TYPE, SEQ_VALUE_TYPE>::get_data"); - - return CCM_TYPE::data_type::_duplicate (this->dds_read_); -} - -template <typename CCM_TYPE, typename TYPED_DDS_READER, typename VALUE_TYPE, typename SEQ_VALUE_TYPE> -typename CCM_TYPE::dds_entity_type::_ptr_type -DDS_Subscriber_Base_T<CCM_TYPE, TYPED_DDS_READER, VALUE_TYPE, SEQ_VALUE_TYPE>::get_dds_entity (void) -{ - DDS4CCM_TRACE ("DDS_Subscriber_Base_T<CCM_TYPE, TYPED_DDS_READER, VALUE_TYPE, SEQ_VALUE_TYPE>::get_dds_entity"); - - return CCM_TYPE::dds_entity_type::_duplicate (this->ccm_data_reader_); -} - -template <typename CCM_TYPE, typename TYPED_DDS_READER, typename VALUE_TYPE, typename SEQ_VALUE_TYPE> -typename CCM_TYPE::filter_config_type::_ptr_type -DDS_Subscriber_Base_T<CCM_TYPE, TYPED_DDS_READER, VALUE_TYPE, SEQ_VALUE_TYPE>::get_filter_config (void) -{ - DDS4CCM_TRACE ("DDS_Subscriber_Base_T<CCM_TYPE, TYPED_DDS_READER, VALUE_TYPE, SEQ_VALUE_TYPE>::get_filter_config"); - - return ::CCM_DDS::CCM_ContentFilterSetting::_duplicate (this->cft_setting_); -} - -template <typename CCM_TYPE, typename TYPED_DDS_READER, typename VALUE_TYPE, typename SEQ_VALUE_TYPE> -::CCM_DDS::QueryFilter * -DDS_Subscriber_Base_T<CCM_TYPE, TYPED_DDS_READER, VALUE_TYPE, SEQ_VALUE_TYPE>::filter (void) -{ - DDS4CCM_TRACE ("DDS_Subscriber_Base_T<CCM_TYPE, TYPED_DDS_READER, VALUE_TYPE, SEQ_VALUE_TYPE>::filter"); - - return this->cft_setting_->filter (); -} - -template <typename CCM_TYPE, typename TYPED_DDS_READER, typename VALUE_TYPE, typename SEQ_VALUE_TYPE> -void -DDS_Subscriber_Base_T<CCM_TYPE, TYPED_DDS_READER, VALUE_TYPE, SEQ_VALUE_TYPE>::filter ( - const ::CCM_DDS::QueryFilter & filter) -{ - DDS4CCM_TRACE ("DDS_Subscriber_Base_T<CCM_TYPE, TYPED_DDS_READER, VALUE_TYPE, SEQ_VALUE_TYPE>::filter"); - if (this->configuration_complete_) - { - throw ::CCM_DDS::NonChangeable (); - } - else - { - this->cft_setting_->filter (filter); - } -} |