diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/CosEvent/ProxyPushSupplier_i.cpp')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/CosEvent/ProxyPushSupplier_i.cpp | 98 |
1 files changed, 32 insertions, 66 deletions
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/ProxyPushSupplier_i.cpp b/TAO/orbsvcs/orbsvcs/CosEvent/ProxyPushSupplier_i.cpp index 9239f86cc09..9fced690fdd 100644 --- a/TAO/orbsvcs/orbsvcs/CosEvent/ProxyPushSupplier_i.cpp +++ b/TAO/orbsvcs/orbsvcs/CosEvent/ProxyPushSupplier_i.cpp @@ -6,15 +6,8 @@ #include "orbsvcs/CosEventCommS.h" #include "orbsvcs/RtecEventCommS.h" #include "ProxyPushSupplier_i.h" -#include "ace/Auto_Ptr.h" -#if defined(_MSC_VER) -#pragma warning(disable:4250) -#endif /* _MSC_VER */ - -class TAO_CosEC_PushConsumerWrapper : - public POA_RtecEventComm::PushConsumer, - public virtual PortableServer::RefCountServantBase +class TAO_CosEC_PushConsumerWrapper : public POA_RtecEventComm::PushConsumer { // = TITLE // Wrapper class for the Rtec PushConsumer. @@ -32,10 +25,10 @@ public: // Destructor. virtual void push (const RtecEventComm::EventSet & data, - CORBA::Environment &ACE_TRY_ENV); + CORBA::Environment &TAO_IN_ENV); // This method is called by the RTEvent Channel to supply data. - virtual void disconnect_push_consumer (CORBA::Environment &ACE_TRY_ENV); + virtual void disconnect_push_consumer (CORBA::Environment &TAO_IN_ENV); // Disconnects the consumer from the event channel. private: @@ -43,10 +36,6 @@ private: // The Cos PushConsumer that we're proxying for. }; -#if defined(_MSC_VER) -#pragma warning(default:4250) -#endif /* _MSC_VER */ - TAO_CosEC_PushConsumerWrapper::TAO_CosEC_PushConsumerWrapper (CosEventComm::PushConsumer_ptr consumer) : consumer_ (CosEventComm::PushConsumer::_duplicate (consumer)) @@ -61,37 +50,37 @@ TAO_CosEC_PushConsumerWrapper::~TAO_CosEC_PushConsumerWrapper () void TAO_CosEC_PushConsumerWrapper::push (const RtecEventComm::EventSet& set, - CORBA::Environment &ACE_TRY_ENV) + CORBA::Environment &TAO_IN_ENV) { for (CORBA::ULong i = 0; i < set.length (); ++i) this->consumer_->push (set[i].data.any_value, - ACE_TRY_ENV); + TAO_IN_ENV); } void -TAO_CosEC_PushConsumerWrapper::disconnect_push_consumer (CORBA::Environment &ACE_TRY_ENV) +TAO_CosEC_PushConsumerWrapper::disconnect_push_consumer (CORBA::Environment &TAO_IN_ENV) { // Deactivate the supplier proxy. - this->consumer_->disconnect_push_consumer (ACE_TRY_ENV); - ACE_CHECK; + this->consumer_->disconnect_push_consumer (TAO_IN_ENV); PortableServer::POA_var poa = - this->_default_POA (ACE_TRY_ENV); - ACE_CHECK; + this->_default_POA (TAO_IN_ENV); + TAO_CHECK_ENV_RETURN_VOID (TAO_IN_ENV); PortableServer::ObjectId_var id = poa->servant_to_id (this, - ACE_TRY_ENV); - ACE_CHECK; + TAO_IN_ENV); + TAO_CHECK_ENV_RETURN_VOID (TAO_IN_ENV); poa->deactivate_object (id.in (), - ACE_TRY_ENV); - ACE_CHECK; + TAO_IN_ENV); + TAO_CHECK_ENV_RETURN_VOID (TAO_IN_ENV); // @@ If we keep a list remember to remove this object from the // list. + delete this; } TAO_CosEC_ProxyPushSupplier_i::TAO_CosEC_ProxyPushSupplier_i @@ -110,63 +99,48 @@ TAO_CosEC_ProxyPushSupplier_i::~TAO_CosEC_ProxyPushSupplier_i (void) } void -TAO_CosEC_ProxyPushSupplier_i::disconnect_push_supplier (CORBA::Environment &ACE_TRY_ENV) +TAO_CosEC_ProxyPushSupplier_i::disconnect_push_supplier (CORBA::Environment &TAO_IN_ENV) { - this->pps_->disconnect_push_supplier (ACE_TRY_ENV); - ACE_CHECK; + this->pps_->disconnect_push_supplier (TAO_IN_ENV); // Deactivate the supplier proxy PortableServer::POA_var poa = - this->_default_POA (ACE_TRY_ENV); - ACE_CHECK; + this->_default_POA (TAO_IN_ENV); + TAO_CHECK_ENV_RETURN_VOID (TAO_IN_ENV); PortableServer::ObjectId_var id = poa->servant_to_id (this, - ACE_TRY_ENV); - ACE_CHECK; + TAO_IN_ENV); + TAO_CHECK_ENV_RETURN_VOID (TAO_IN_ENV); poa->deactivate_object (id.in (), - ACE_TRY_ENV); - ACE_CHECK; + TAO_IN_ENV); + TAO_CHECK_ENV_RETURN_VOID (TAO_IN_ENV); // @@ If we keep a list remember to remove this object from the // list. + delete this; } -void -TAO_CosEC_ProxyPushSupplier_i::connect_push_consumer -(CosEventComm::PushConsumer_ptr push_consumer, - CORBA::Environment &ACE_TRY_ENV) +void TAO_CosEC_ProxyPushSupplier_i::connect_push_consumer (CosEventComm::PushConsumer_ptr push_consumer, + CORBA::Environment &ACE_TRY_ENV) { if (this->connected ()) ACE_THROW (CosEventChannelAdmin::AlreadyConnected ()); + if (push_consumer == CosEventComm::PushConsumer::_nil()) - ACE_THROW (CORBA::BAD_PARAM ()); + ACE_THROW (CORBA::BAD_PARAM (CORBA::COMPLETED_NO)); - TAO_CosEC_PushConsumerWrapper *wrapper; - ACE_NEW_THROW_EX (wrapper, + ACE_NEW_THROW_EX (this->wrapper_, TAO_CosEC_PushConsumerWrapper (push_consumer), - CORBA::NO_MEMORY ()); + CORBA::NO_MEMORY (CORBA::COMPLETED_NO)); ACE_CHECK; - auto_ptr <TAO_CosEC_PushConsumerWrapper> auto_wrapper (wrapper); - // @@ This code is not exception safe. - RtecEventComm::PushConsumer_ptr rtecpushconsumer = - auto_wrapper.get ()->_this (ACE_TRY_ENV); - ACE_CHECK; - - // give the ownership to the POA. - auto_wrapper.get ()->_remove_ref (ACE_TRY_ENV); - ACE_CHECK; - - this->pps_->connect_push_consumer (rtecpushconsumer, - this->qos_, - ACE_TRY_ENV); - ACE_CHECK; - - this->wrapper_ = auto_wrapper.release (); + this->pps_->connect_push_consumer (this->wrapper_->_this (ACE_TRY_ENV), + this->qos_, + ACE_TRY_ENV); } int @@ -174,11 +148,3 @@ TAO_CosEC_ProxyPushSupplier_i::connected (void) { return this->wrapper_ == 0 ? 0 : 1; } - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) - template class ACE_Auto_Basic_Ptr<TAO_CosEC_PushConsumerWrapper>; - template class auto_ptr<TAO_CosEC_PushConsumerWrapper>; -#elif defined(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -# pragma instantiate ACE_Auto_Basic_Ptr<TAO_CosEC_PushConsumerWrapper> -# pragma instantiate auto_ptr<TAO_CosEC_PushConsumerWrapper> -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ |