summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/CosEvent/ProxyPushSupplier_i.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/CosEvent/ProxyPushSupplier_i.cpp')
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/ProxyPushSupplier_i.cpp98
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 */