diff options
Diffstat (limited to 'CIAO/connectors/dds4ccm/impl/ndds/Subscriber.cpp')
-rw-r--r-- | CIAO/connectors/dds4ccm/impl/ndds/Subscriber.cpp | 617 |
1 files changed, 0 insertions, 617 deletions
diff --git a/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.cpp b/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.cpp deleted file mode 100644 index 8f9f859f162..00000000000 --- a/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.cpp +++ /dev/null @@ -1,617 +0,0 @@ -#include "dds4ccm/impl/ndds/Subscriber.h" -#include "dds4ccm/impl/ndds/Topic.h" -#include "dds4ccm/impl/ndds/ContentFilteredTopic.h" -#include "dds4ccm/impl/ndds/DataReader_T.h" -#include "dds4ccm/impl/ndds/DataReaderListener.h" -#include "dds4ccm/impl/ndds/StatusCondition.h" -#include "dds4ccm/impl/ndds/DomainParticipant.h" -#include "dds4ccm/impl/ndds/TypeSupport.h" -#include "dds4ccm/impl/ndds/Utils.h" - -#include "dds4ccm/impl/ndds/SubscriberListener.h" - -#include "dds4ccm/impl/ndds/convertors/InstanceHandle_t.h" -#include "dds4ccm/impl/ndds/convertors/DataReaderQos.h" -#include "dds4ccm/impl/ndds/convertors/SubscriberQos.h" -#include "dds4ccm/impl/ndds/convertors/TopicQos.h" - -#include "dds4ccm/impl/logger/Log_Macros.h" - -namespace CIAO -{ - namespace NDDS - { - DDS_Subscriber_i::DDS_Subscriber_i (::DDSSubscriber * sub, - ::DDS::DomainParticipant_ptr dp) - : rti_entity_ (sub), - dp_ (::DDS::DomainParticipant::_duplicate (dp)) - { - DDS4CCM_TRACE ("DDS_Subscriber_i::DDS_Subscriber_i"); - } - - DDS_Subscriber_i::~DDS_Subscriber_i (void) - { - DDS4CCM_TRACE ("DDS_Subscriber_i::~DDS_Subscriber_i"); - } - - ::DDS::ReturnCode_t - DDS_Subscriber_i::enable (void) - { - return this->rti_entity ()->enable (); - } - - ::DDS::StatusCondition_ptr - DDS_Subscriber_i::get_statuscondition (void) - { - ::DDS::StatusCondition_var retval; - ::DDSStatusCondition* sc = this->rti_entity ()->get_statuscondition (); - if (sc) - { - ACE_NEW_THROW_EX (retval, - DDS_StatusCondition_i (sc, this->dp_.in ()), - ::CORBA::NO_MEMORY ()); - } - return retval._retn (); - } - - ::DDS::StatusMask - DDS_Subscriber_i::get_status_changes (void) - { - return this->rti_entity ()->get_status_changes (); - } - - ::DDS::InstanceHandle_t - DDS_Subscriber_i::get_instance_handle (void) - { - ::DDS_InstanceHandle_t const rtihandle = - this->rti_entity ()->get_instance_handle (); - ::DDS::InstanceHandle_t handle; - handle <<= rtihandle; - return handle; - } - - DDSDataReader * - DDS_Subscriber_i::create_datareader ( - DDSContentFilteredTopic * topic, - DDSDataReaderListener * ccm_dds_drl, - ::DDS::StatusMask mask, - const ::DDS::DataReaderQos & qos) - { - DDS_DataReaderQos ccm_dds_qos; - DDS_ReturnCode_t const retcode = this->rti_entity ()->get_default_datareader_qos (ccm_dds_qos); - if (retcode != DDS_RETCODE_OK) - { - DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_ERROR, (LM_ERROR, DDS4CCM_INFO - "DDS_Subscriber_i" - "::create_datareader - " - "Error: Unable to retrieve default datareader qos\n")); - return 0; - } - - ccm_dds_qos <<= qos; - return this->rti_entity ()->create_datareader (topic, - ccm_dds_qos, - ccm_dds_drl, - mask); - } - - DDSDataReader * - DDS_Subscriber_i::create_datareader ( - DDSTopic * topic, - DDSDataReaderListener * ccm_dds_drl, - ::DDS::StatusMask mask, - const ::DDS::DataReaderQos & qos) - { - DDS_DataReaderQos ccm_dds_qos; - DDS_ReturnCode_t const retcode = this->rti_entity ()->get_default_datareader_qos (ccm_dds_qos); - if (retcode != DDS_RETCODE_OK) - { - DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_ERROR, (LM_ERROR, DDS4CCM_INFO - "DDS_Subscriber_i" - "::create_datareader - " - "Error: Unable to retrieve default datareader qos\n")); - return 0; - } - ccm_dds_qos <<= qos; - return this->rti_entity ()->create_datareader (topic, - ccm_dds_qos, - ccm_dds_drl, - mask); - } - - DDSDataReader * - DDS_Subscriber_i::create_datareader_with_profile ( - DDSContentFilteredTopic * topic, - const char * qos_profile, - DDSDataReaderListener * ccm_dds_drl, - ::DDS::StatusMask mask) - { - char * lib_name = get_library_name(qos_profile); - char * prof_name = get_profile_name(qos_profile); - - DDSDataReader * dr = 0; - - if (lib_name != 0 && prof_name != 0) - { - dr = this->rti_entity ()->create_datareader_with_profile ( - topic, - lib_name, - prof_name, - ccm_dds_drl, - mask); - } - - ACE_OS::free (lib_name); - ACE_OS::free (prof_name); - - return dr; - } - - DDSDataReader * - DDS_Subscriber_i::create_datareader_with_profile ( - DDSTopic * topic, - const char * qos_profile, - DDSDataReaderListener * ccm_dds_drl, - ::DDS::StatusMask mask) - { - char * lib_name = get_library_name (qos_profile); - char * prof_name = get_profile_name (qos_profile); - - DDSDataReader * dr = 0; - - if (lib_name != 0 && prof_name != 0) - { - dr = this->rti_entity ()->create_datareader_with_profile (topic, - lib_name, - prof_name, - ccm_dds_drl, - mask); - } - - ACE_OS::free (lib_name); - ACE_OS::free (prof_name); - return dr; - } - - ::DDS::DataReader_ptr - DDS_Subscriber_i::create_datareader ( - ::DDS::TopicDescription_ptr a_topic, - const ::DDS::DataReaderQos & qos, - ::DDS::DataReaderListener_ptr a_listener, - ::DDS::StatusMask mask) - { - DDS4CCM_TRACE ("DDS_Subscriber_i::create_datareader"); - DDS_DataReaderListener_i *ccm_dds_drl = 0; - if (! ::CORBA::is_nil (a_listener)) - { - ACE_NEW_THROW_EX (ccm_dds_drl, - DDS_DataReaderListener_i (a_listener, - ::DDS::DataReader::_nil ()), - ::CORBA::NO_MEMORY ()); - } - - DDSDataReader * ccm_dds_dr = 0; - DDS_Topic_i* topic = dynamic_cast < DDS_Topic_i * > (a_topic); - - if (!topic) - { - DDS_ContentFilteredTopic_i * cf_topic = - dynamic_cast < DDS_ContentFilteredTopic_i * > (a_topic); - if (!cf_topic) - { - DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_CAST_ERROR, (LM_ERROR, DDS4CCM_INFO - "DDS_Subscriber_i::create_datareader - Error: Unable to " - "cast provided topic to one of its servant.\n")); - delete ccm_dds_drl; - return ::DDS::DataReader::_nil (); - } - else - ccm_dds_dr = this->create_datareader (cf_topic->get_rti_entity (), - ccm_dds_drl, - mask, - qos); - } - else - ccm_dds_dr = this->create_datareader (topic->get_rti_entity (), - ccm_dds_drl, - mask, - qos); - - if (!ccm_dds_dr) - { - DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_DDS_NIL_RETURN, (LM_ERROR, DDS4CCM_INFO "DDS_Subscriber_i" - "::create_datareader - " - "Error: RTI Topic returned a nil datareader.\n")); - delete ccm_dds_drl; - return ::DDS::DataReader::_nil (); - } - else - { - DDS4CCM_DEBUG (DDS4CCM_LOG_LEVEL_ACTION, (LM_DEBUG, DDS4CCM_INFO - "DDS_Subscriber_i::create_datareader - " - "Successfully created datareader.\n")); - } - - ::DDS::DataReader_var reader = DDS_TypeSupport_i::create_datareader ( - ccm_dds_dr, - this->dp_.in (), - this); - if (ccm_dds_drl) - { - ccm_dds_drl->set_dds_entity (reader.in ()); - } - return reader._retn (); - } - - - ::DDS::DataReader_ptr - DDS_Subscriber_i::create_datareader_with_profile ( - ::DDS::TopicDescription_ptr a_topic, - const char * qos_profile, - ::DDS::DataReaderListener_ptr a_listener, - ::DDS::StatusMask mask) - { - DDS4CCM_TRACE ("DDS_Subscriber_i::create_datareader_with_profile"); - DDS_DataReaderListener_i *ccm_dds_drl = 0; - if (! ::CORBA::is_nil (a_listener)) - { - ACE_NEW_THROW_EX (ccm_dds_drl, - DDS_DataReaderListener_i (a_listener, ::DDS::DataReader::_nil ()), - ::CORBA::NO_MEMORY ()); - } - - DDSDataReader * ccm_dds_dr = 0; - DDS_Topic_i * topic = dynamic_cast < DDS_Topic_i * > (a_topic); - - if (!topic) - { - DDS_ContentFilteredTopic_i * cf_topic = - dynamic_cast < DDS_ContentFilteredTopic_i * > (a_topic); - if (!cf_topic) - { - DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_CAST_ERROR, (LM_ERROR, DDS4CCM_INFO - "DDS_Subscriber_i::create_datareader_with_profile <%C> - " - "Error: Unable to cast provided topic to one " - "of its servant.\n", - qos_profile)); - delete ccm_dds_drl; - return ::DDS::DataReader::_nil (); - } - else - { - ccm_dds_dr = this->create_datareader_with_profile (cf_topic->get_rti_entity (), - qos_profile, - ccm_dds_drl, - mask); - } - } - else - { - ccm_dds_dr = this->create_datareader_with_profile (topic->get_rti_entity (), - qos_profile, - ccm_dds_drl, - mask); - } - - if (!ccm_dds_dr) - { - DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_DDS_NIL_RETURN, (LM_ERROR, DDS4CCM_INFO - "DDS_Subscriber_i::create_datareader_with_profile <%C>- " - "Error: RTI Topic returned a nil datareader.\n", - qos_profile)); - delete ccm_dds_drl; - return ::DDS::DataReader::_nil (); - } - else - { - DDS4CCM_DEBUG (DDS4CCM_LOG_LEVEL_ACTION, (LM_DEBUG, DDS4CCM_INFO - "DDS_Subscriber_i::create_datareader_with_profile - " - "Successfully created datareader with profile <%C>.\n", - qos_profile)); - } - - ::DDS::DataReader_var reader = DDS_TypeSupport_i::create_datareader (ccm_dds_dr, - this->dp_.in (), - this); - if (ccm_dds_drl) - { - ccm_dds_drl->set_dds_entity (reader.in ()); - } - return reader._retn (); - } - - ::DDS::ReturnCode_t - DDS_Subscriber_i::delete_datareader ( - ::DDS::DataReader_ptr a_datareader) - { - DDS_DataReader_Base *dr = dynamic_cast< DDS_DataReader_Base *> (a_datareader); - if (!dr) - { - DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_CAST_ERROR, (LM_ERROR, DDS4CCM_INFO - "DDS_Subscriber_i::delete_datareader - Unable to cast " - "provided object reference to servant.\n")); - return ::DDS::RETCODE_BAD_PARAMETER; - } - - DDS4CCM_DEBUG (DDS4CCM_LOG_LEVEL_CAST_SUCCESSFUL, (LM_TRACE, DDS4CCM_INFO - "DDS_Subscriber_i::delete_datareader - " - "Successfully casted provided object reference " - "to servant.\n")); - - DDSDataReader* rti_dr = dr->get_rti_entity (); - dr->set_rti_entity (0, ::DDS::DomainParticipant::_nil ()); - DDS_ReturnCode_t const retval = - this->rti_entity ()->delete_datareader (rti_dr); - - if (retval != DDS_RETCODE_OK) - { - DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_ERROR, (LM_ERROR, DDS4CCM_INFO - "DDS_Subscriber_i::delete_datareader - " - "Error: Returned non-ok error code %C\n", - ::CIAO::DDS4CCM::translate_retcode (retval))); - } - else - { - DDS4CCM_DEBUG (DDS4CCM_LOG_LEVEL_ACTION, (LM_INFO, DDS4CCM_INFO - "DDS_Subscriber_i::delete_datareader - " - "Datareader successfully deleted\n")); - } - - return retval; - } - - ::DDS::ReturnCode_t - DDS_Subscriber_i::delete_contained_entities (void) - { - return this->rti_entity ()->delete_contained_entities (); - } - - ::DDS::DataReader_ptr - DDS_Subscriber_i::lookup_datareader ( - const char * impl_name) - { - ::DDS::DataReader_var retval; - DDSDataReader* dr = this->rti_entity ()->lookup_datareader (impl_name); - if (dr) - { - retval = DDS_TypeSupport_i::create_datareader (dr, - this->dp_.in (), - this); - } - return retval._retn(); - } - - - ::DDS::ReturnCode_t - DDS_Subscriber_i::get_datareaders ( - ::DDS::DataReaderSeq & readers, - ::DDS::SampleStateMask sample_states, - ::DDS::ViewStateMask view_states, - ::DDS::InstanceStateMask instance_states) - { - DDS4CCM_TRACE ("DDS_Subscriber_i::get_datareaders"); - ::DDSDataReaderSeq dds_readers; - - ::DDS_ReturnCode_t retcode = - this->rti_entity ()->get_datareaders (dds_readers, - sample_states, - view_states, - instance_states); - if (retcode == DDS_RETCODE_OK) - { - readers.length (dds_readers.length ()); - for (::DDS_Long i = 0; i < dds_readers.length (); ++i) - { - ::DDS::DataReader_var rdr = DDS_TypeSupport_i::create_datareader ( - dds_readers[i], - this->dp_.in (), - this); - readers [i] = rdr._retn (); - } - } - return retcode; - } - - - ::DDS::ReturnCode_t - DDS_Subscriber_i::notify_datareaders (void) - { - return this->rti_entity ()->notify_datareaders (); - } - - - ::DDS::ReturnCode_t - DDS_Subscriber_i::set_qos ( - const ::DDS::SubscriberQos & qos) - { - DDS4CCM_TRACE ("DDS_Subscriber_i::set_qos"); - ::DDS_SubscriberQos ccm_dds_qos; - DDS_ReturnCode_t const retcode = this->rti_entity ()->get_qos (ccm_dds_qos); - if (retcode != DDS_RETCODE_OK) - { - DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_ERROR, (LM_ERROR, DDS4CCM_INFO - "DDS_Subscriber_i" - "::set_qos - " - "Error: Unable to retrieve subscriber qos\n")); - return retcode; - } - ccm_dds_qos <<= qos; - return this->rti_entity ()->get_qos (ccm_dds_qos); - } - - - ::DDS::ReturnCode_t - DDS_Subscriber_i::get_qos ( - ::DDS::SubscriberQos & qos) - { - DDS4CCM_TRACE ("DDS_Subscriber_i::get_qos"); - ::DDS_SubscriberQos ccm_dds_qos; - ccm_dds_qos <<= qos; - DDS_ReturnCode_t const retcode = this->rti_entity ()->get_qos (ccm_dds_qos); - qos <<= ccm_dds_qos; - return retcode; - } - - - ::DDS::ReturnCode_t - DDS_Subscriber_i::set_listener ( - ::DDS::SubscriberListener_ptr a_listener, - ::DDS::StatusMask mask) - { - DDS4CCM_TRACE ("DDS_Subscriber_i::set_listener"); - - // Retrieve the previously set listener - DDSSubscriberListener *old_listener = this->rti_entity ()->get_listener (); - - DDSSubscriberListener *listener = 0; - if (! ::CORBA::is_nil (a_listener)) - { - ACE_NEW_THROW_EX (listener, - DDS_SubscriberListener_i ( - a_listener, - this->dp_.in ()), - ::CORBA::NO_MEMORY ()); - } - - ::DDS::ReturnCode_t const retcode = - this->rti_entity ()->set_listener (listener, mask); - - if (retcode != ::DDS::RETCODE_OK) - { - delete listener; - } - else - { - delete old_listener; - } - - return retcode; - } - - - ::DDS::SubscriberListener_ptr - DDS_Subscriber_i::get_listener (void) - { - DDS4CCM_TRACE ("DDS_Subscriber_i::get_listener"); - - DDSSubscriberListener *ccm_dds_impl_list = this->rti_entity ()->get_listener (); - DDS_SubscriberListener_i *list_proxy = - dynamic_cast <DDS_SubscriberListener_i *> (ccm_dds_impl_list); - if (!list_proxy) - { - DDS4CCM_DEBUG (DDS4CCM_LOG_LEVEL_ACTION, (LM_DEBUG, DDS4CCM_INFO - "DDS_Subscriber_i::get_listener - " - "DDS returned a NIL listener.\n")); - return ::DDS::SubscriberListener::_nil (); - } - return list_proxy->get_subscriber_listener (); - } - - - ::DDS::ReturnCode_t - DDS_Subscriber_i::begin_access (void) - { - return this->rti_entity ()->begin_access (); - } - - - ::DDS::ReturnCode_t - DDS_Subscriber_i::end_access (void) - { - return this->rti_entity ()->end_access (); - } - - - ::DDS::DomainParticipant_ptr - DDS_Subscriber_i::get_participant (void) - { - return DDS::DomainParticipant::_duplicate (this->dp_.in ()); - } - - - ::DDS::ReturnCode_t - DDS_Subscriber_i::set_default_datareader_qos ( - const ::DDS::DataReaderQos & qos) - { - DDS4CCM_TRACE ("DDS_Subscriber_i::set_default_datareader_qos"); - ::DDS_DataReaderQos ccm_dds_qos; - DDS_ReturnCode_t const retcode = this->rti_entity ()->get_default_datareader_qos (ccm_dds_qos); - if (retcode != DDS_RETCODE_OK) - { - DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_ERROR, (LM_ERROR, DDS4CCM_INFO - "DDS_Subscriber_i" - "::set_default_datareader_qos - " - "Error: Unable to retrieve default datareader qos\n")); - return retcode; - } - ccm_dds_qos <<= qos; - return this->rti_entity ()->set_default_datareader_qos (ccm_dds_qos); - } - - ::DDS::ReturnCode_t - DDS_Subscriber_i::get_default_datareader_qos ( - ::DDS::DataReaderQos & qos) - { - DDS4CCM_TRACE ("DDS_Subscriber_i::get_default_datareader_qos"); - ::DDS_DataReaderQos ccm_dds_qos; - ::DDS::ReturnCode_t const retcode = - this->rti_entity ()->get_default_datareader_qos (ccm_dds_qos); - qos <<= ccm_dds_qos; - return retcode; - } - - - ::DDS::ReturnCode_t - DDS_Subscriber_i::copy_from_topic_qos ( - ::DDS::DataReaderQos & a_datareader_qos, - const ::DDS::TopicQos & a_impl_qos) - { - DDS4CCM_TRACE ("DDS_Subscriber_i::copy_from_topic_qos"); - ::DDS_DataReaderQos ccm_dds_qos; - ::DDS_TopicQos ccm_dds_topic_qos; - DDS_ReturnCode_t retcode = this->rti_entity ()->get_default_datareader_qos (ccm_dds_qos); - if (retcode != DDS_RETCODE_OK) - { - DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_ERROR, (LM_ERROR, DDS4CCM_INFO - "DDS_Subscriber_i" - "::copy_from_topic_qos - " - "Error: Unable to retrieve default datareader qos\n")); - return retcode; - } - - ccm_dds_qos <<= a_datareader_qos; - ccm_dds_topic_qos <<= a_impl_qos; - retcode = - this->rti_entity ()->copy_from_topic_qos (ccm_dds_qos, - ccm_dds_topic_qos); - a_datareader_qos <<= ccm_dds_qos; - return retcode; - } - - DDSSubscriber * - DDS_Subscriber_i::get_rti_entity (void) - { - return this->rti_entity_; - } - - void - DDS_Subscriber_i::set_rti_entity (DDSSubscriber * sub) - { - this->rti_entity_ = sub; - } - - DDSSubscriber * - DDS_Subscriber_i::rti_entity (void) - { - if (!this->rti_entity_) - { - DDS4CCM_DEBUG (DDS4CCM_LOG_LEVEL_ACTION, (LM_DEBUG, - "DDS_Subscriber_i::rti_entity - " - "Throwing BAD_INV_ORDER.\n")); - throw ::CORBA::BAD_INV_ORDER (); - } - return this->rti_entity_; - } - } -} - |