diff options
24 files changed, 269 insertions, 154 deletions
diff --git a/CIAO/ChangeLog b/CIAO/ChangeLog index bd2667af0e0..3fb27448181 100644 --- a/CIAO/ChangeLog +++ b/CIAO/ChangeLog @@ -1,3 +1,64 @@ +Tue Aug 17 18:30:35 UTC 2010 Johnny Willemsen <jwillemsen@remedy.nl> + + * connectors/dds4ccm/impl/ContentFilterSetting.h: + * connectors/dds4ccm/impl/ContentFilteredTopic_T.h: + * connectors/dds4ccm/impl/DDS_Get_T.h: + * connectors/dds4ccm/impl/DDS_Get_T.cpp: + * connectors/dds4ccm/impl/DDS_Listen_T.h: + * connectors/dds4ccm/impl/DDS_Listen_T.cpp: + * connectors/dds4ccm/impl/DDS_StateListen_T.h: + * connectors/dds4ccm/impl/DDS_StateListen_T.cpp: + * connectors/dds4ccm/impl/DDS_Subscriber_Base_T.h: + * connectors/dds4ccm/impl/DDS_Subscriber_Base_T.cpp: + * connectors/dds4ccm/impl/DDS_Update_T.h: + * connectors/dds4ccm/impl/DDS_Update_T.cpp: + * connectors/dds4ccm/impl/DDS_Write_T.h: + * connectors/dds4ccm/impl/DDS_Write_T.cpp: + * connectors/dds4ccm/impl/DataReaderListener_T.h: + * connectors/dds4ccm/impl/DataReaderListener_T.cpp: + * connectors/dds4ccm/impl/DataReaderStateListener_T.h: + * connectors/dds4ccm/impl/DataReaderStateListener_T.cpp: + * connectors/dds4ccm/impl/DataReader_T.h: + * connectors/dds4ccm/impl/DataWriter_T.h: + * connectors/dds4ccm/impl/LocalObject_T.h: + * connectors/dds4ccm/impl/LocalObject_T.cpp: + Splitted lifecycle of the connector from its facets using the new + LocalObject_Auto_Ptr_T which allocates the local facet and makes sure + we call release on it when the connector gets destructed. It can be + that the user component is destructed after the connector and than + we just can't destructs the facets at that moment, because they are + still in the user component context. They will get destructed at the + moment the user component context gets destructed + +Tue Aug 17 18:29:41 UTC 2010 Johnny Willemsen <jwillemsen@remedy.nl> + + * ciao/Servants/Connector_Servant_Impl_Base.cpp: + + * connectors/dds4ccm/impl/ContentFilterSetting.h: + * connectors/dds4ccm/impl/ContentFilteredTopic_T.h: + * connectors/dds4ccm/impl/DDS_Get_T.h: + * connectors/dds4ccm/impl/DDS_Get_T.cpp: + * connectors/dds4ccm/impl/DDS_Listen_T.h: + * connectors/dds4ccm/impl/DDS_Listen_T.cpp: + * connectors/dds4ccm/impl/DDS_StateListen_T.h: + * connectors/dds4ccm/impl/DDS_StateListen_T.cpp: + * connectors/dds4ccm/impl/DDS_Subscriber_Base_T.h: + * connectors/dds4ccm/impl/DDS_Subscriber_Base_T.cpp: + * connectors/dds4ccm/impl/DDS_Update_T.h: + * connectors/dds4ccm/impl/DDS_Update_T.cpp: + * connectors/dds4ccm/impl/DDS_Write_T.h: + * connectors/dds4ccm/impl/DDS_Write_T.cpp: + * connectors/dds4ccm/impl/DataReaderListener_T.h: + * connectors/dds4ccm/impl/DataReaderListener_T.cpp: + * connectors/dds4ccm/impl/DataReaderStateListener_T.h: + * connectors/dds4ccm/impl/DataReaderStateListener_T.cpp: + * connectors/dds4ccm/impl/DataReader_T.h: + * connectors/dds4ccm/impl/DataWriter_T.h: + * connectors/dds4ccm/impl/LocalObject_T.h: + * connectors/dds4ccm/impl/LocalObject_T.cpp: + + * connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender_exec.cpp: + Tue Aug 17 07:56:45 UTC 2010 Johnny Willemsen <jwillemsen@remedy.nl> * connectors/ami4ccm/docs/RFP.odt: diff --git a/CIAO/connectors/dds4ccm/impl/ContentFilterSetting.h b/CIAO/connectors/dds4ccm/impl/ContentFilterSetting.h index 0bfcbf52568..ba7de8101d6 100644 --- a/CIAO/connectors/dds4ccm/impl/ContentFilterSetting.h +++ b/CIAO/connectors/dds4ccm/impl/ContentFilterSetting.h @@ -25,7 +25,7 @@ namespace CIAO { public: /// Constructor - CCM_DDS_ContentFilterSetting_i (); + CCM_DDS_ContentFilterSetting_i (void); /// Destructor virtual ~CCM_DDS_ContentFilterSetting_i (void); diff --git a/CIAO/connectors/dds4ccm/impl/ContentFilteredTopic_T.h b/CIAO/connectors/dds4ccm/impl/ContentFilteredTopic_T.h index 0384a680e60..7e17febfbf1 100644 --- a/CIAO/connectors/dds4ccm/impl/ContentFilteredTopic_T.h +++ b/CIAO/connectors/dds4ccm/impl/ContentFilteredTopic_T.h @@ -32,7 +32,7 @@ namespace CIAO typedef CCM_DDS_DomainParticipant_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> DomainParticipant_type; public: /// Constructor - CCM_DDS_ContentFilteredTopic_T (DDSContentFilteredTopic * dw); + explicit CCM_DDS_ContentFilteredTopic_T (DDSContentFilteredTopic * dw = 0); /// Destructor virtual ~CCM_DDS_ContentFilteredTopic_T (void); diff --git a/CIAO/connectors/dds4ccm/impl/DDS_Get_T.cpp b/CIAO/connectors/dds4ccm/impl/DDS_Get_T.cpp index 6ac91527a75..6c01abc360e 100644 --- a/CIAO/connectors/dds4ccm/impl/DDS_Get_T.cpp +++ b/CIAO/connectors/dds4ccm/impl/DDS_Get_T.cpp @@ -28,8 +28,8 @@ DDS_Get_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::configuration_complete ( subscriber, library_name, profile_name); - this->dds_get_.set_impl (&this->data_reader_, &this->condition_manager_); - this->dds_get_._set_component (component); + this->dds_get_->set_impl (this->data_reader_, &this->condition_manager_); + this->dds_get_->_set_component (component); } template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED, DDS4CCM_Vendor VENDOR_TYPE> @@ -39,7 +39,7 @@ DDS_Get_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::remove ( { DDS4CCM_TRACE ("DDS_Get_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::remove"); DDSSubscriberBase_type::remove (subscriber); - this->dds_get_._set_component (CCM_TYPE::base_type::_nil ()); + this->dds_get_->_set_component (CCM_TYPE::base_type::_nil ()); } template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED, DDS4CCM_Vendor VENDOR_TYPE> @@ -48,5 +48,5 @@ DDS_Get_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::get_fresh_data (void) { DDS4CCM_TRACE ("DDS_Get_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::get_fresh_data"); - return CCM_TYPE::getter_type::_duplicate (&this->dds_get_); + return CCM_TYPE::getter_type::_duplicate (this->dds_get_); } diff --git a/CIAO/connectors/dds4ccm/impl/DDS_Get_T.h b/CIAO/connectors/dds4ccm/impl/DDS_Get_T.h index 33a0697e789..c460aab7b33 100644 --- a/CIAO/connectors/dds4ccm/impl/DDS_Get_T.h +++ b/CIAO/connectors/dds4ccm/impl/DDS_Get_T.h @@ -15,11 +15,6 @@ template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED, DDS4CCM_Vendor VENDO class DDS_Get_T : public DDS_Subscriber_Base_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE> { -typedef CIAO::DDS4CCM::ConditionManager_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> - ConditionManager_type; -typedef DDS_Subscriber_Base_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE> - DDSSubscriberBase_type; - public: DDS_Get_T (void); ~DDS_Get_T (void); @@ -43,12 +38,19 @@ public: ::DDS::Subscriber_ptr subscriber); private: + typedef CIAO::DDS4CCM::ConditionManager_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> + ConditionManager_type; + typedef DDS_Subscriber_Base_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE> + DDSSubscriberBase_type; + typedef ::CIAO::DDS4CCM::DDS_CCM::Getter_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE> + Getter_type; + /** * DDS_Get */ //@{ ::DDS::DataReaderListener_var listener_; - ::CIAO::DDS4CCM::DDS_CCM::Getter_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE> dds_get_; + ::CIAO::DDS4CCM::LocalObject_Auto_Ptr_T<Getter_type> dds_get_; //@} }; diff --git a/CIAO/connectors/dds4ccm/impl/DDS_Listen_T.cpp b/CIAO/connectors/dds4ccm/impl/DDS_Listen_T.cpp index 8702823e2f3..61333d87417 100644 --- a/CIAO/connectors/dds4ccm/impl/DDS_Listen_T.cpp +++ b/CIAO/connectors/dds4ccm/impl/DDS_Listen_T.cpp @@ -32,7 +32,7 @@ DDS_Listen_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::configuration_complete ( subscriber, library_name, profile_name); - this->data_control_._set_component (component); + this->data_control_->_set_component (component); } template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED, DDS4CCM_Vendor VENDOR_TYPE> @@ -50,13 +50,13 @@ DDS_Listen_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::activate ( DataReaderListener_type ( listener, status, - data_control_, + this->data_control_, reactor, this->condition_manager_), ::CORBA::NO_MEMORY ()); } - ::DDS::ReturnCode_t const retcode = this->data_reader_.set_listener ( + ::DDS::ReturnCode_t const retcode = this->data_reader_->set_listener ( this->listener_.in (), DataReaderListener_type::get_mask (status)); @@ -77,7 +77,7 @@ DDS_Listen_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::remove ( { DDS4CCM_TRACE ("DDS_Listen_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::remove"); - this->data_control_._set_component (CCM_TYPE::base_type::_nil ()); + this->data_control_->_set_component (CCM_TYPE::base_type::_nil ()); DDSSubscriberBase_type::remove (subscriber); } @@ -88,6 +88,6 @@ DDS_Listen_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::get_data_control (void) { DDS4CCM_TRACE ("DDS_Listen_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::get_data_control"); - return ::CCM_DDS::CCM_DataListenerControl::_duplicate (&this->data_control_); + return ::CCM_DDS::CCM_DataListenerControl::_duplicate (this->data_control_); } diff --git a/CIAO/connectors/dds4ccm/impl/DDS_Listen_T.h b/CIAO/connectors/dds4ccm/impl/DDS_Listen_T.h index b9548a8cdf8..0bdabcd0596 100644 --- a/CIAO/connectors/dds4ccm/impl/DDS_Listen_T.h +++ b/CIAO/connectors/dds4ccm/impl/DDS_Listen_T.h @@ -20,15 +20,6 @@ template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED, DDS4CCM_Vendor VENDO class DDS_Listen_T : public DDS_Subscriber_Base_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE> { -typedef CIAO::DDS4CCM::ConditionManager_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> - ConditionManager_type; -typedef ::CIAO::DDS4CCM::DataReaderListener_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> - DataReaderListener_type; -typedef CCM_DDS_DataListenerControl_T< ::CCM_DDS::CCM_DataListenerControl, CCM_TYPE> - DataListenerControl_type; -typedef DDS_Subscriber_Base_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE> - DDSSubscriberBase_type; - public: DDS_Listen_T (void); ~DDS_Listen_T (void); @@ -56,11 +47,20 @@ public: void remove (::DDS::Subscriber_ptr subscriber); private: + typedef CIAO::DDS4CCM::ConditionManager_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> + ConditionManager_type; + typedef ::CIAO::DDS4CCM::DataReaderListener_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> + DataReaderListener_type; + typedef CCM_DDS_DataListenerControl_T< ::CCM_DDS::CCM_DataListenerControl, CCM_TYPE> + DataListenerControl_type; + typedef DDS_Subscriber_Base_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE> + DDSSubscriberBase_type; + /** * DDS_Listen */ //@{ - DataListenerControl_type data_control_; + ::CIAO::DDS4CCM::LocalObject_Auto_Ptr_T<DataListenerControl_type> data_control_; //@} }; diff --git a/CIAO/connectors/dds4ccm/impl/DDS_StateListen_T.cpp b/CIAO/connectors/dds4ccm/impl/DDS_StateListen_T.cpp index 182ba848026..45f1ecdab7e 100644 --- a/CIAO/connectors/dds4ccm/impl/DDS_StateListen_T.cpp +++ b/CIAO/connectors/dds4ccm/impl/DDS_StateListen_T.cpp @@ -36,7 +36,7 @@ DDS_StateListen_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::configuration_complet library_name, profile_name); - this->data_control_._set_component (component); + this->data_control_->_set_component (component); } template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED, DDS4CCM_Vendor VENDOR_TYPE> @@ -59,9 +59,12 @@ DDS_StateListen_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::activate ( this->condition_manager_), ::CORBA::NO_MEMORY ()); } - ::DDS::ReturnCode_t const retcode = this->data_reader_.set_listener ( - this->listener_.in (), - DataReaderStateListener_type::get_mask (listener)); + + ::DDS::ReturnCode_t const retcode = + this->data_reader_->set_listener ( + this->listener_.in (), + DataReaderStateListener_type::get_mask (listener)); + if (retcode != ::DDS::RETCODE_OK) { DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_ERROR, (LM_ERROR, CLINFO @@ -79,7 +82,7 @@ DDS_StateListen_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::remove ( { DDS4CCM_TRACE ("DDS_StateListen_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::remove"); - this->data_control_._set_component (CCM_TYPE::base_type::_nil ()); + this->data_control_->_set_component (CCM_TYPE::base_type::_nil ()); DDSSubscriberBase_type::remove (subscriber); } @@ -89,7 +92,7 @@ DDS_StateListen_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::get_data_control (voi { DDS4CCM_TRACE ("DDS_StateListen_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::get_data_control"); - return ::CCM_DDS::CCM_StateListenerControl::_duplicate (&this->data_control_); + return ::CCM_DDS::CCM_StateListenerControl::_duplicate (this->data_control_); } diff --git a/CIAO/connectors/dds4ccm/impl/DDS_StateListen_T.h b/CIAO/connectors/dds4ccm/impl/DDS_StateListen_T.h index 18cea2335e2..02f2ad4ab71 100644 --- a/CIAO/connectors/dds4ccm/impl/DDS_StateListen_T.h +++ b/CIAO/connectors/dds4ccm/impl/DDS_StateListen_T.h @@ -16,15 +16,6 @@ template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED, DDS4CCM_Vendor VENDO class DDS_StateListen_T : public DDS_Subscriber_Base_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE> { -typedef CIAO::DDS4CCM::ConditionManager_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> - ConditionManager_type; -typedef ::CIAO::DDS4CCM::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> - DataReaderStateListener_type; -typedef CCM_DDS_StateListenerControl_T< ::CCM_DDS::CCM_StateListenerControl, CCM_TYPE> - StateListenerControl_type; -typedef DDS_Subscriber_Base_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE> - DDSSubscriberBase_type; - public: DDS_StateListen_T (void); ~DDS_StateListen_T (void); @@ -52,11 +43,20 @@ public: void remove (::DDS::Subscriber_ptr subscriber); private: + typedef CIAO::DDS4CCM::ConditionManager_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> + ConditionManager_type; + typedef ::CIAO::DDS4CCM::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> + DataReaderStateListener_type; + typedef CCM_DDS_StateListenerControl_T< ::CCM_DDS::CCM_StateListenerControl, CCM_TYPE> + StateListenerControl_type; + typedef DDS_Subscriber_Base_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE> + DDSSubscriberBase_type; + /** * DDS_StateListen */ //@{ - StateListenerControl_type data_control_; + ::CIAO::DDS4CCM::LocalObject_Auto_Ptr_T<StateListenerControl_type> data_control_; //@} }; diff --git a/CIAO/connectors/dds4ccm/impl/DDS_Subscriber_Base_T.cpp b/CIAO/connectors/dds4ccm/impl/DDS_Subscriber_Base_T.cpp index b292584888d..cad15909a77 100644 --- a/CIAO/connectors/dds4ccm/impl/DDS_Subscriber_Base_T.cpp +++ b/CIAO/connectors/dds4ccm/impl/DDS_Subscriber_Base_T.cpp @@ -5,8 +5,7 @@ template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED, DDS4CCM_Vendor VENDOR_TYPE> DDS_Subscriber_Base_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::DDS_Subscriber_Base_T (void) - : data_reader_ (0), - configuration_complete_ (false) + : configuration_complete_ (false) { } @@ -28,13 +27,12 @@ DDS_Subscriber_Base_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::configuration_com this->configuration_complete_ = true; - if (!this->data_reader_.get_impl ()) + if (!this->data_reader_->get_impl ()) { - if (ACE_OS::strlen (this->cft_setting_.filter ()->expression.in ()) > 0) + if (ACE_OS::strlen (this->cft_setting_->filter ()->expression.in ()) > 0) { ::DDS::ContentFilteredTopic_var cft = - this->cft_setting_.create_contentfilteredtopic (topic, - subscriber); + this->cft_setting_->create_contentfilteredtopic (topic, subscriber); if (CORBA::is_nil (cft.in ())) { DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_ERROR, (LM_ERROR, @@ -42,21 +40,21 @@ DDS_Subscriber_Base_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::configuration_com "Error creating ContentFilteredTopic.\n")); throw ::CORBA::INTERNAL (); } - this->data_reader_.create_datareader (cft, - subscriber, - library_name, - profile_name); + this->data_reader_->create_datareader (cft, + subscriber, + library_name, + profile_name); } else { - this->data_reader_.create_datareader (topic, - subscriber, - library_name, - profile_name); + this->data_reader_->create_datareader (topic, + subscriber, + library_name, + profile_name); } - this->dds_read_.set_impl (&this->data_reader_, + this->dds_read_->set_impl (this->data_reader_, &this->condition_manager_); - this->dds_read_._set_component (component); + this->dds_read_->_set_component (component); } } @@ -75,7 +73,7 @@ DDS_Subscriber_Base_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::activate ( ::CORBA::NO_MEMORY ()); } - ::DDS::ReturnCode_t const retcode = this->data_reader_.set_listener ( + ::DDS::ReturnCode_t const retcode = this->data_reader_->set_listener ( this->listener_.in (), PortStatusListener_type::get_mask (status)); @@ -96,7 +94,7 @@ DDS_Subscriber_Base_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::passivate () DDS4CCM_TRACE ("DDS_Subscriber_Base_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::passivate"); this->condition_manager_.passivate (); - this->data_reader_.passivate (); + this->data_reader_->passivate (); this->listener_ = ::DDS::DataReaderListener::_nil (); } @@ -107,9 +105,9 @@ DDS_Subscriber_Base_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::remove ( { DDS4CCM_TRACE ("DDS_Subscriber_Base_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::remove"); - this->data_reader_.delete_datareader (subscriber); - this->cft_setting_.delete_contentfilteredtopic (subscriber); - this->dds_read_._set_component (CCM_TYPE::base_type::_nil ()); + this->data_reader_->delete_datareader (subscriber); + this->cft_setting_->delete_contentfilteredtopic (subscriber); + this->dds_read_->_set_component (CCM_TYPE::base_type::_nil ()); } template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED, DDS4CCM_Vendor VENDOR_TYPE> @@ -118,7 +116,7 @@ DDS_Subscriber_Base_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::get_data (void) { DDS4CCM_TRACE ("DDS_Subscriber_Base_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::get_data"); - return CCM_TYPE::reader_type::_duplicate (&this->dds_read_); + return CCM_TYPE::reader_type::_duplicate (this->dds_read_); } template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED, DDS4CCM_Vendor VENDOR_TYPE> @@ -127,7 +125,7 @@ DDS_Subscriber_Base_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::get_dds_entity (v { DDS4CCM_TRACE ("DDS_Subscriber_Base_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::get_dds_entity"); - return ::DDS::CCM_DataReader::_duplicate (&this->data_reader_); + return ::DDS::CCM_DataReader::_duplicate (this->data_reader_); } template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED, DDS4CCM_Vendor VENDOR_TYPE> @@ -136,7 +134,7 @@ DDS_Subscriber_Base_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::get_filter_config { DDS4CCM_TRACE ("DDS_Subscriber_Base_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::get_filter_config"); - return ::CCM_DDS::CCM_ContentFilterSetting::_duplicate (&this->cft_setting_); + return ::CCM_DDS::CCM_ContentFilterSetting::_duplicate (this->cft_setting_); } template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED, DDS4CCM_Vendor VENDOR_TYPE> @@ -145,7 +143,7 @@ DDS_Subscriber_Base_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::filter (void) { DDS4CCM_TRACE ("DDS_Subscriber_Base_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::filter"); - return this->cft_setting_.filter (); + return this->cft_setting_->filter (); } template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED, DDS4CCM_Vendor VENDOR_TYPE> @@ -160,6 +158,6 @@ DDS_Subscriber_Base_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE>::filter ( } else { - this->cft_setting_.filter (filter); + this->cft_setting_->filter (filter); } } diff --git a/CIAO/connectors/dds4ccm/impl/DDS_Subscriber_Base_T.h b/CIAO/connectors/dds4ccm/impl/DDS_Subscriber_Base_T.h index dfeb95661c6..35461982c25 100644 --- a/CIAO/connectors/dds4ccm/impl/DDS_Subscriber_Base_T.h +++ b/CIAO/connectors/dds4ccm/impl/DDS_Subscriber_Base_T.h @@ -20,11 +20,6 @@ template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED, DDS4CCM_Vendor VENDOR_TYPE> class DDS_Subscriber_Base_T { -typedef CIAO::DDS4CCM::ConditionManager_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> - ConditionManager_type; -typedef ::CIAO::DDS4CCM::PortStatusListener_T <DDS_TYPE, CCM_TYPE, VENDOR_TYPE> - PortStatusListener_type; - public: DDS_Subscriber_Base_T (void); ~DDS_Subscriber_Base_T (void); @@ -61,14 +56,25 @@ public: void remove (::DDS::Subscriber_ptr subscriber); protected: + typedef CIAO::DDS4CCM::ConditionManager_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> + ConditionManager_type; + typedef ::CIAO::DDS4CCM::PortStatusListener_T <DDS_TYPE, CCM_TYPE, VENDOR_TYPE> + PortStatusListener_type; + typedef ::CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE> + Reader_type; + typedef ::CIAO::DDS4CCM::DataReader_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> + DataReader_type; + typedef ::CIAO::DDS4CCM::CCM_DDS_ContentFilterSetting_i + ContentFilterSetting_type; + /** * DDS_Subscriber_Base_T */ //@{ ::DDS::DataReaderListener_var listener_; - ::CIAO::DDS4CCM::CCM_DDS_ContentFilterSetting_i cft_setting_; - ::CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED, VENDOR_TYPE> dds_read_; - ::CIAO::DDS4CCM::DataReader_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> data_reader_; + ::CIAO::DDS4CCM::LocalObject_Auto_Ptr_T<ContentFilterSetting_type> cft_setting_; + ::CIAO::DDS4CCM::LocalObject_Auto_Ptr_T<Reader_type> dds_read_; + ::CIAO::DDS4CCM::LocalObject_Auto_Ptr_T<DataReader_type> data_reader_; bool configuration_complete_; //@} ConditionManager_type condition_manager_; diff --git a/CIAO/connectors/dds4ccm/impl/DDS_Update_T.cpp b/CIAO/connectors/dds4ccm/impl/DDS_Update_T.cpp index 827b11a21f1..773fbeb20a4 100644 --- a/CIAO/connectors/dds4ccm/impl/DDS_Update_T.cpp +++ b/CIAO/connectors/dds4ccm/impl/DDS_Update_T.cpp @@ -9,8 +9,7 @@ #include "dds4ccm/impl/Log_Macros.h" template <typename DDS_TYPE, typename CCM_TYPE, DDS4CCM_Vendor VENDOR_TYPE> -DDS_Update_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::DDS_Update_T (void) : - ccm_dds_writer_ (0) +DDS_Update_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::DDS_Update_T (void) { } @@ -29,7 +28,7 @@ DDS_Update_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::configuration_complete ( const char* profile_name) { DDS4CCM_TRACE ("DDS_Update_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::configuration_complete"); - if (!this->ccm_dds_writer_.get_impl ()) + if (!this->ccm_dds_writer_->get_impl ()) { ::DDS::DataWriter_var dwv_tmp; if (library_name && profile_name) @@ -60,9 +59,9 @@ DDS_Update_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::configuration_complete ( "internal represenation.\n")); throw ::CORBA::INTERNAL (); } - this->ccm_dds_writer_.set_impl (rw->get_impl ()); - this->dds_update_.set_impl (&this->ccm_dds_writer_); - this->dds_update_._set_component (component); + this->ccm_dds_writer_->set_impl (rw->get_impl ()); + this->dds_update_->set_impl (this->ccm_dds_writer_); + this->dds_update_->_set_component (component); } } @@ -78,7 +77,7 @@ DDS_Update_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::activate () ::CORBA::NO_MEMORY ()); } - ::DDS::ReturnCode_t const retcode = this->ccm_dds_writer_.set_listener ( + ::DDS::ReturnCode_t const retcode = this->ccm_dds_writer_->set_listener ( this->data_listener_.in (), DataWriterListener_type::get_mask ()); @@ -97,9 +96,10 @@ void DDS_Update_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::passivate () { DDS4CCM_TRACE ("DDS_Update_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::passivate"); - ::DDS::ReturnCode_t const retcode = this->ccm_dds_writer_.set_listener ( - ::DDS::DataWriterListener::_nil (), - 0); + + ::DDS::ReturnCode_t const retcode = + this->ccm_dds_writer_->set_listener (::DDS::DataWriterListener::_nil (), 0); + if (retcode != ::DDS::RETCODE_OK) { DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_ERROR, (LM_ERROR, CLINFO @@ -119,7 +119,7 @@ DDS_Update_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::remove ( { DDS4CCM_TRACE ("DDS_Update_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::remove"); ::DDS::ReturnCode_t const retval = - publisher->delete_datawriter (&this->ccm_dds_writer_); + publisher->delete_datawriter (this->ccm_dds_writer_); if (retval != ::DDS::RETCODE_OK) { DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_ERROR, (LM_ERROR, CLINFO @@ -128,22 +128,22 @@ DDS_Update_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::remove ( ::CIAO::DDS4CCM::translate_retcode (retval))); throw ::CORBA::INTERNAL (); } - this->ccm_dds_writer_.set_impl (0); - this->dds_update_._set_component (CCM_TYPE::base_type::_nil ()); - this->dds_update_.set_impl (0); + this->ccm_dds_writer_->set_impl (0); + this->dds_update_->_set_component (CCM_TYPE::base_type::_nil ()); + this->dds_update_->set_impl (0); } template <typename DDS_TYPE, typename CCM_TYPE, DDS4CCM_Vendor VENDOR_TYPE> typename CCM_TYPE::updater_type::_ptr_type DDS_Update_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::get_data (void) { - return CCM_TYPE::updater_type::_duplicate (&this->dds_update_); + return CCM_TYPE::updater_type::_duplicate (this->dds_update_); } template <typename DDS_TYPE, typename CCM_TYPE, DDS4CCM_Vendor VENDOR_TYPE> ::DDS::CCM_DataWriter_ptr DDS_Update_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::get_dds_entity (void) { - return ::DDS::CCM_DataWriter::_duplicate (&this->ccm_dds_writer_); + return ::DDS::CCM_DataWriter::_duplicate (this->ccm_dds_writer_); } diff --git a/CIAO/connectors/dds4ccm/impl/DDS_Update_T.h b/CIAO/connectors/dds4ccm/impl/DDS_Update_T.h index 089282931ff..af805f53685 100644 --- a/CIAO/connectors/dds4ccm/impl/DDS_Update_T.h +++ b/CIAO/connectors/dds4ccm/impl/DDS_Update_T.h @@ -35,18 +35,21 @@ public: void remove (::DDS::Publisher_ptr publisher); private: - /** + typedef ::CIAO::DDS4CCM::DataWriterListener_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> + DataWriterListener_type; + typedef ::CIAO::DDS4CCM::CCM_DDS_DataWriter_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> + DataWriter_type; + typedef ::CIAO::DDS4CCM::Updater_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> + Updater_type; + + /** * DDS_Update */ //@{ ::DDS::DataWriterListener_var data_listener_; - ::CIAO::DDS4CCM::Updater_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> dds_update_; - ::CIAO::DDS4CCM::CCM_DDS_DataWriter_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> ccm_dds_writer_; + ::CIAO::DDS4CCM::LocalObject_Auto_Ptr_T<Updater_type> dds_update_; + ::CIAO::DDS4CCM::LocalObject_Auto_Ptr_T<DataWriter_type> ccm_dds_writer_; //@} - typedef ::CIAO::DDS4CCM::DataWriterListener_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> - DataWriterListener_type; - typedef ::CIAO::DDS4CCM::CCM_DDS_DataWriter_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> - DataWriter_type; }; #include "dds4ccm/impl/DDS_Update_T.cpp" diff --git a/CIAO/connectors/dds4ccm/impl/DDS_Write_T.cpp b/CIAO/connectors/dds4ccm/impl/DDS_Write_T.cpp index 42fa4a86dd8..3d3bedce7e7 100644 --- a/CIAO/connectors/dds4ccm/impl/DDS_Write_T.cpp +++ b/CIAO/connectors/dds4ccm/impl/DDS_Write_T.cpp @@ -8,8 +8,7 @@ #include "dds4ccm/impl/Log_Macros.h" template <typename DDS_TYPE, typename CCM_TYPE, DDS4CCM_Vendor VENDOR_TYPE> -DDS_Write_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::DDS_Write_T (void) : - ccm_dds_writer_ (0) +DDS_Write_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::DDS_Write_T (void) { } @@ -29,7 +28,7 @@ DDS_Write_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::configuration_complete ( { DDS4CCM_TRACE ("DDS_Write_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::configuration_complete"); - if (!this->ccm_dds_writer_.get_impl ()) + if (!this->ccm_dds_writer_->get_impl ()) { ::DDS::DataWriter_var dwv_tmp; if (library_name && profile_name) @@ -59,9 +58,9 @@ DDS_Write_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::configuration_complete ( "internal represenation.\n")); throw ::CORBA::INTERNAL (); } - this->ccm_dds_writer_.set_impl (rw->get_impl ()); - this->writer_t_.set_impl (&this->ccm_dds_writer_); - this->writer_t_._set_component (component); + this->ccm_dds_writer_->set_impl (rw->get_impl ()); + this->writer_t_->set_impl (this->ccm_dds_writer_); + this->writer_t_->_set_component (component); } } template <typename DDS_TYPE, typename CCM_TYPE, DDS4CCM_Vendor VENDOR_TYPE> @@ -76,9 +75,11 @@ DDS_Write_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::activate () DataWriterListener_type (), ::CORBA::NO_MEMORY ()); } - ::DDS::ReturnCode_t const retcode = this->ccm_dds_writer_.set_listener ( - this->data_listener_.in (), - DataWriterListener_type::get_mask ()); + + ::DDS::ReturnCode_t const retcode = + this->ccm_dds_writer_->set_listener (this->data_listener_.in (), + DataWriterListener_type::get_mask ()); + if (retcode != DDS::RETCODE_OK) { DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_ERROR, (LM_ERROR, CLINFO @@ -95,9 +96,9 @@ DDS_Write_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::passivate () { DDS4CCM_TRACE ("DDS_Write_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::passivate"); - ::DDS::ReturnCode_t const retcode = this->ccm_dds_writer_.set_listener ( - ::DDS::DataWriterListener::_nil (), - 0); + ::DDS::ReturnCode_t const retcode = + this->ccm_dds_writer_->set_listener (::DDS::DataWriterListener::_nil (), 0); + if (retcode != ::DDS::RETCODE_OK) { DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_ERROR, (LM_ERROR, CLINFO @@ -118,12 +119,13 @@ DDS_Write_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::remove ( DDS4CCM_TRACE ("DDS_Write_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::remove"); DDS::ReturnCode_t const retcode = - publisher->delete_datawriter (&this->ccm_dds_writer_); + publisher->delete_datawriter (this->ccm_dds_writer_); + if (retcode == ::DDS::RETCODE_OK) { - this->ccm_dds_writer_.set_impl (0); - this->writer_t_._set_component (CCM_TYPE::base_type::_nil ()); - this->writer_t_.set_impl (0); + this->ccm_dds_writer_->set_impl (0); + this->writer_t_->_set_component (CCM_TYPE::base_type::_nil ()); + this->writer_t_->set_impl (0); } else { @@ -138,7 +140,7 @@ DDS_Write_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::get_data (void) { DDS4CCM_TRACE ("DDS_Write_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::get_data"); - return CCM_TYPE::writer_type::_duplicate (&this->writer_t_); + return CCM_TYPE::writer_type::_duplicate (this->writer_t_); } template <typename DDS_TYPE, typename CCM_TYPE, DDS4CCM_Vendor VENDOR_TYPE> @@ -147,6 +149,6 @@ DDS_Write_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::get_dds_entity (void) { DDS4CCM_TRACE ("DDS_Write_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::get_dds_entity"); - return ::DDS::CCM_DataWriter::_duplicate (&this->ccm_dds_writer_); + return ::DDS::CCM_DataWriter::_duplicate (this->ccm_dds_writer_); } diff --git a/CIAO/connectors/dds4ccm/impl/DDS_Write_T.h b/CIAO/connectors/dds4ccm/impl/DDS_Write_T.h index 8450f6dd77f..92108699563 100644 --- a/CIAO/connectors/dds4ccm/impl/DDS_Write_T.h +++ b/CIAO/connectors/dds4ccm/impl/DDS_Write_T.h @@ -42,20 +42,22 @@ public: void remove (::DDS::Publisher_ptr publisher); -private: +private: + typedef ::CIAO::DDS4CCM::Writer_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> Writer_type; + typedef ::CIAO::DDS4CCM::DataWriterListener_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> + DataWriterListener_type; + typedef ::CIAO::DDS4CCM::CCM_DDS_DataWriter_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> + DataWriter_type; + /** * DDS_Write */ //@{ ::DDS::DataWriterListener_var data_listener_; - ::CIAO::DDS4CCM::Writer_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> writer_t_; - ::CIAO::DDS4CCM::CCM_DDS_DataWriter_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> ccm_dds_writer_; + ::CIAO::DDS4CCM::LocalObject_Auto_Ptr_T < Writer_type > writer_t_; + ::CIAO::DDS4CCM::LocalObject_Auto_Ptr_T < DataWriter_type > ccm_dds_writer_; //@} - typedef ::CIAO::DDS4CCM::DataWriterListener_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> - DataWriterListener_type; - typedef ::CIAO::DDS4CCM::CCM_DDS_DataWriter_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> - DataWriter_type; }; #include "dds4ccm/impl/DDS_Write_T.cpp" diff --git a/CIAO/connectors/dds4ccm/impl/DataReaderListener_T.cpp b/CIAO/connectors/dds4ccm/impl/DataReaderListener_T.cpp index 21918dcbd3c..22cba82a624 100644 --- a/CIAO/connectors/dds4ccm/impl/DataReaderListener_T.cpp +++ b/CIAO/connectors/dds4ccm/impl/DataReaderListener_T.cpp @@ -8,12 +8,12 @@ template <typename DDS_TYPE, typename CCM_TYPE, DDS4CCM_Vendor VENDOR_TYPE> CIAO::DDS4CCM::DataReaderListener_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::DataReaderListener_T ( typename CCM_TYPE::listener_type::_ptr_type listener, ::CCM_DDS::PortStatusListener_ptr port_status_listener, - DataListenerControl_type& control, + ::CCM_DDS::DataListenerControl_ptr control, ACE_Reactor * reactor, ConditionManager_type& condition_manager) : PortStatusListener_T <DDS_TYPE, CCM_TYPE, VENDOR_TYPE> (port_status_listener, reactor) , listener_ (CCM_TYPE::listener_type::_duplicate (listener)), - control_ (control), + control_ (::CCM_DDS::DataListenerControl::_duplicate (control)), condition_manager_ (condition_manager) { DDS4CCM_TRACE ("CIAO::DDS4CCM::DataReaderListener_T::DataReaderListener_T"); @@ -33,7 +33,7 @@ CIAO::DDS4CCM::DataReaderListener_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::on_data_av DDS4CCM_TRACE ("CIAO::DDS4CCM::DataReaderListener_T::on_data_available"); if (!::CORBA::is_nil (rdr) && - this->control_.mode () != ::CCM_DDS::NOT_ENABLED) + this->control_->mode () != ::CCM_DDS::NOT_ENABLED) { if (this->reactor_) { @@ -62,7 +62,7 @@ CIAO::DDS4CCM::DataReaderListener_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::on_data_av DDS4CCM_TRACE ("CIAO::DDS4CCM::DataReaderListener_T::on_data_available_i"); if (::CORBA::is_nil (rdr) || - this->control_.mode () == ::CCM_DDS::NOT_ENABLED) + this->control_->mode () == ::CCM_DDS::NOT_ENABLED) { return; } @@ -100,7 +100,7 @@ CIAO::DDS4CCM::DataReaderListener_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::on_data_av return; } - if (this->control_.mode () == ::CCM_DDS::ONE_BY_ONE) + if (this->control_->mode () == ::CCM_DDS::ONE_BY_ONE) { for (::DDS_Long i = 0; i < data.length (); ++i) { diff --git a/CIAO/connectors/dds4ccm/impl/DataReaderListener_T.h b/CIAO/connectors/dds4ccm/impl/DataReaderListener_T.h index ac62eb722ae..722b5681edb 100644 --- a/CIAO/connectors/dds4ccm/impl/DataReaderListener_T.h +++ b/CIAO/connectors/dds4ccm/impl/DataReaderListener_T.h @@ -11,8 +11,6 @@ #define DATAREADERLISTENER_T_H_ #include "dds4ccm/idl/dds_rtf2_dcpsC.h" - -#include "dds4ccm/impl/DataListenerControl_T.h" #include "dds4ccm/impl/PortStatusListener_T.h" ACE_BEGIN_VERSIONED_NAMESPACE_DECL @@ -33,15 +31,13 @@ namespace CIAO PortStatusListener_type; typedef ::CIAO::DDS4CCM::ConditionManager_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> ConditionManager_type; - typedef CCM_DDS_DataListenerControl_T< ::CCM_DDS::CCM_DataListenerControl, CCM_TYPE> - DataListenerControl_type; public: /// Constructor - DataReaderListener_T ( + explicit DataReaderListener_T ( typename CCM_TYPE::listener_type::_ptr_type listener, ::CCM_DDS::PortStatusListener_ptr port_status_listener, - DataListenerControl_type& control, + ::CCM_DDS::DataListenerControl_ptr control, ACE_Reactor * reactor, ConditionManager_type& condition_manager); @@ -57,7 +53,7 @@ namespace CIAO private: typename CCM_TYPE::listener_type::_var_type listener_; - DataListenerControl_type& control_; + ::CCM_DDS::DataListenerControl_var control_; ConditionManager_type& condition_manager_; }; } diff --git a/CIAO/connectors/dds4ccm/impl/DataReaderStateListener_T.cpp b/CIAO/connectors/dds4ccm/impl/DataReaderStateListener_T.cpp index 3d3bf2119d1..d8943fb76ef 100644 --- a/CIAO/connectors/dds4ccm/impl/DataReaderStateListener_T.cpp +++ b/CIAO/connectors/dds4ccm/impl/DataReaderStateListener_T.cpp @@ -11,12 +11,12 @@ template <typename DDS_TYPE, typename CCM_TYPE, DDS4CCM_Vendor VENDOR_TYPE> CIAO::DDS4CCM::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::DataReaderStateListener_T ( typename CCM_TYPE::statelistener_type::_ptr_type listener, ::CCM_DDS::PortStatusListener_ptr port_status_listener, - StateListenerControl_type& control, + ::CCM_DDS::StateListenerControl_ptr control, ACE_Reactor* reactor, ConditionManager_type& condition_manager) : PortStatusListener_T <DDS_TYPE, CCM_TYPE, VENDOR_TYPE> (port_status_listener, reactor) , listener_ (CCM_TYPE::statelistener_type::_duplicate (listener)), - control_ (control), + control_ (::CCM_DDS::StateListenerControl::_duplicate (control)), condition_manager_ (condition_manager) { DDS4CCM_TRACE ("CIAO::DDS4CCM::DataReaderStateListener_T::DataReaderStateListener_T"); @@ -36,7 +36,7 @@ CIAO::DDS4CCM::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::on_da { DDS4CCM_TRACE ("CIAO::DDS4CCM::DataReaderStateListener_T::on_data_available"); if (!::CORBA::is_nil (rdr) && - this->control_.mode () != ::CCM_DDS::NOT_ENABLED) + this->control_->mode () != ::CCM_DDS::NOT_ENABLED) { if (this->reactor_) { @@ -65,7 +65,7 @@ CIAO::DDS4CCM::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::on_da DDS4CCM_TRACE ("CIAO::DDS4CCM::DataReaderStateListener_T::on_data_available_i"); if (::CORBA::is_nil (rdr) || - this->control_.mode () == ::CCM_DDS::NOT_ENABLED) + this->control_->mode () == ::CCM_DDS::NOT_ENABLED) { return; } @@ -88,11 +88,11 @@ CIAO::DDS4CCM::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::on_da ::DDS_SampleInfoSeq sample_info; ::DDS_Long max_samples = 0; - this->control_.mode () == ::CCM_DDS::ONE_BY_ONE + this->control_->mode () == ::CCM_DDS::ONE_BY_ONE ? max_samples = DDS_LENGTH_UNLIMITED - : this->control_.max_delivered_data() == 0 + : this->control_->max_delivered_data() == 0 ? max_samples = DDS_LENGTH_UNLIMITED - : max_samples = this->control_.max_delivered_data (); + : max_samples = this->control_->max_delivered_data (); ::DDS::ReturnCode_t const result = reader->take ( data, @@ -109,7 +109,7 @@ CIAO::DDS4CCM::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::on_da ACE_TEXT ("Unable to take data from data reader, ") ACE_TEXT ("error %d.\n"), result)); } - if (this->control_.mode () == ::CCM_DDS::ONE_BY_ONE) + if (this->control_->mode () == ::CCM_DDS::ONE_BY_ONE) { for (::DDS_Long i = 0; i < data.length (); ++i) { @@ -140,7 +140,7 @@ CIAO::DDS4CCM::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::on_da } } } - else if (this->control_.mode () == ::CCM_DDS::MANY_BY_MANY) + else if (this->control_->mode () == ::CCM_DDS::MANY_BY_MANY) { typedef std::vector<DDS_Long> Updates; Updates updates; diff --git a/CIAO/connectors/dds4ccm/impl/DataReaderStateListener_T.h b/CIAO/connectors/dds4ccm/impl/DataReaderStateListener_T.h index 61b5d5b0e26..ac45cc5b866 100644 --- a/CIAO/connectors/dds4ccm/impl/DataReaderStateListener_T.h +++ b/CIAO/connectors/dds4ccm/impl/DataReaderStateListener_T.h @@ -25,15 +25,13 @@ namespace CIAO ConditionManager_type; typedef ::CIAO::DDS4CCM::DataReaderStateHandler_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> DataReaderStateHandler_type; - typedef CCM_DDS_StateListenerControl_T< ::CCM_DDS::CCM_StateListenerControl, CCM_TYPE> - StateListenerControl_type; public: /// Constructor DataReaderStateListener_T ( typename CCM_TYPE::statelistener_type::_ptr_type listener, ::CCM_DDS::PortStatusListener_ptr port_status_listener, - StateListenerControl_type& control, + ::CCM_DDS::StateListenerControl_ptr control, ACE_Reactor* reactor, ConditionManager_type& condition_manager); @@ -49,7 +47,7 @@ namespace CIAO private: typename CCM_TYPE::statelistener_type::_var_type listener_; - StateListenerControl_type& control_; + ::CCM_DDS::StateListenerControl_var control_; ConditionManager_type& condition_manager_; }; } diff --git a/CIAO/connectors/dds4ccm/impl/DataReader_T.h b/CIAO/connectors/dds4ccm/impl/DataReader_T.h index 9b488f6fee6..1277958055f 100644 --- a/CIAO/connectors/dds4ccm/impl/DataReader_T.h +++ b/CIAO/connectors/dds4ccm/impl/DataReader_T.h @@ -52,7 +52,7 @@ namespace CIAO typedef DataReader_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> DataReader_type; public: /// Constructor - DataReader_T (DDSDataReader * dr); + explicit DataReader_T (DDSDataReader * dr = 0); /// Destructor virtual ~DataReader_T (void); diff --git a/CIAO/connectors/dds4ccm/impl/DataWriter_T.h b/CIAO/connectors/dds4ccm/impl/DataWriter_T.h index 5225d665ef7..c825212abae 100644 --- a/CIAO/connectors/dds4ccm/impl/DataWriter_T.h +++ b/CIAO/connectors/dds4ccm/impl/DataWriter_T.h @@ -48,7 +48,7 @@ namespace CIAO typedef CCM_DDS_Topic_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE> Topic_type; public: - explicit CCM_DDS_DataWriter_T (DDSDataWriter * dw); + explicit CCM_DDS_DataWriter_T (DDSDataWriter * dw = 0); virtual ::DDS::ReturnCode_t set_qos (const ::DDS::DataWriterQos & qos); diff --git a/CIAO/connectors/dds4ccm/impl/LocalObject_T.cpp b/CIAO/connectors/dds4ccm/impl/LocalObject_T.cpp index 3ae8281912e..f6d1133a536 100644 --- a/CIAO/connectors/dds4ccm/impl/LocalObject_T.cpp +++ b/CIAO/connectors/dds4ccm/impl/LocalObject_T.cpp @@ -24,3 +24,28 @@ CIAO::DDS4CCM::LocalObject_T<CCM_TYPE>::_set_component ( { this->component_ = CCM_TYPE::base_type::_duplicate (component); } + +template <typename LOCAL_OBJECT> +CIAO::DDS4CCM::LocalObject_Auto_Ptr_T<LOCAL_OBJECT>::LocalObject_Auto_Ptr_T (void) : l (new LOCAL_OBJECT) +{ +} + +template <typename LOCAL_OBJECT> +CIAO::DDS4CCM::LocalObject_Auto_Ptr_T<LOCAL_OBJECT>::~LocalObject_Auto_Ptr_T (void) +{ + ::CORBA::release (l); +} + +template <typename LOCAL_OBJECT> +LOCAL_OBJECT* +CIAO::DDS4CCM::LocalObject_Auto_Ptr_T<LOCAL_OBJECT>::operator-> (void) const +{ + return this->l; +} + +template <typename LOCAL_OBJECT> +CIAO::DDS4CCM::LocalObject_Auto_Ptr_T<LOCAL_OBJECT>::operator LOCAL_OBJECT *& (void) +{ + return this->l; +} + diff --git a/CIAO/connectors/dds4ccm/impl/LocalObject_T.h b/CIAO/connectors/dds4ccm/impl/LocalObject_T.h index b18b651fd2a..993b88af67a 100644 --- a/CIAO/connectors/dds4ccm/impl/LocalObject_T.h +++ b/CIAO/connectors/dds4ccm/impl/LocalObject_T.h @@ -24,6 +24,25 @@ namespace CIAO private: typename CCM_TYPE::base_type::_var_type component_; }; + + /** + * Helper template that allocates a new LOCAL_OBJECT from the heap and that + * makes sure we call ::CORBA::release() at destruction + */ + template <typename LOCAL_OBJECT> + class LocalObject_Auto_Ptr_T : private ACE_Copy_Disabled + { + public: + LocalObject_Auto_Ptr_T (void); + + ~LocalObject_Auto_Ptr_T (void); + + LOCAL_OBJECT* operator-> (void) const; + + operator LOCAL_OBJECT *& (void); + private: + LOCAL_OBJECT* l; + }; } } diff --git a/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender_exec.cpp b/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender_exec.cpp index 6d7392a7da1..b0f7300cb0a 100644 --- a/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender_exec.cpp +++ b/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender_exec.cpp @@ -55,8 +55,8 @@ namespace CIAO_LNE_Test_Sender_Impl } } -::LNE_Test::ListenNotEnabledTestConnector::Writer_var writer = - this->context_->get_connection_info_write_data (); + ::LNE_Test::ListenNotEnabledTestConnector::Writer_var writer = + this->context_->get_connection_info_write_data (); try { |