diff options
Diffstat (limited to 'TAO/examples/POA/Forwarding/test_i.cpp')
-rw-r--r-- | TAO/examples/POA/Forwarding/test_i.cpp | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/TAO/examples/POA/Forwarding/test_i.cpp b/TAO/examples/POA/Forwarding/test_i.cpp new file mode 100644 index 00000000000..254c4377ace --- /dev/null +++ b/TAO/examples/POA/Forwarding/test_i.cpp @@ -0,0 +1,59 @@ +// $Id$ + +#include "test_i.h" +#include "Servant_Activator.h" + +ACE_RCSID(Forwarding, test_i, "$Id$") + +// Constructor +test_i::test_i (CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + ServantActivator &activator, + CORBA::Long value) + : orb_ (CORBA::ORB::_duplicate (orb)), + poa_ (PortableServer::POA::_duplicate (poa)), + activator_ (activator), + value_ (value) +{ +} + +CORBA::Long +test_i::doit (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + return this->value_++; +} + +void +test_i::forward (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException, + test::Cannot_Forward)) +{ + this->activator_.forward_requests (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + PortableServer::ObjectId_var id = + this->poa_->servant_to_id (this + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + this->poa_->deactivate_object (id.in () + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + + +void +test_i::shutdown (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + this->orb_->shutdown (0 + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + +PortableServer::POA_ptr +test_i::_default_POA (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) +{ + return PortableServer::POA::_duplicate (this->poa_.in ()); +} |