summaryrefslogtreecommitdiff
path: root/TAO/examples/POA/Forwarding/test_i.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/examples/POA/Forwarding/test_i.cpp')
-rw-r--r--TAO/examples/POA/Forwarding/test_i.cpp59
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 ());
+}