summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Concurrency/Concurrency_Utils.cpp
diff options
context:
space:
mode:
authorjai <jai@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2002-04-02 02:13:08 +0000
committerjai <jai@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2002-04-02 02:13:08 +0000
commit8c424b36bb5066c02334f5f6d1b2ae9bc09b99ae (patch)
treefe19c29174b4ab8821594a31683854ec30e385bb /TAO/orbsvcs/orbsvcs/Concurrency/Concurrency_Utils.cpp
parent1daa4ce1d2729ce2581424af7985f554a8c33c60 (diff)
downloadATCD-8c424b36bb5066c02334f5f6d1b2ae9bc09b99ae.tar.gz
Mon Apr 1 18:05:22 2002 Jaiganesh Balasubramanian <jai@doc.ece.uci.edu>
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Concurrency/Concurrency_Utils.cpp')
-rw-r--r--TAO/orbsvcs/orbsvcs/Concurrency/Concurrency_Utils.cpp61
1 files changed, 47 insertions, 14 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Concurrency/Concurrency_Utils.cpp b/TAO/orbsvcs/orbsvcs/Concurrency/Concurrency_Utils.cpp
index 3a46ea8d99b..b92643bb4d0 100644
--- a/TAO/orbsvcs/orbsvcs/Concurrency/Concurrency_Utils.cpp
+++ b/TAO/orbsvcs/orbsvcs/Concurrency/Concurrency_Utils.cpp
@@ -16,9 +16,12 @@
#include "ace/streams.h"
#include "orbsvcs/CosConcurrencyControlC.h"
#include "tao/corba.h"
+#include "tao/debug.h"
#include "Concurrency_Utils.h"
-ACE_RCSID(Concurrency, Concurrency_Utils, "$Id$")
+ACE_RCSID (Concurrency,
+ Concurrency_Utils,
+ "$Id$")
// Default constructor
@@ -28,23 +31,27 @@ TAO_Concurrency_Server::TAO_Concurrency_Server (void)
// Constructor which takes an ORB and POA.
-TAO_Concurrency_Server::TAO_Concurrency_Server (CORBA::ORB_var &orb,
- PortableServer::POA_var &poa)
+TAO_Concurrency_Server::TAO_Concurrency_Server (CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa)
{
- this->init (orb, poa);
+ CORBA::Object_var obj = this->init (orb, poa);
}
// Function to initialize the concurrency server object under the
// passed orb and poa.
-int
-TAO_Concurrency_Server::init (CORBA::ORB_var &orb,
- PortableServer::POA_var &poa)
+CORBA::Object_ptr
+TAO_Concurrency_Server::init (CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa)
{
+ CORBA::Object_var obj;
+
ACE_TRY_NEW_ENV
{
// @@ Huh?!?
+ this->poa_= PortableServer::POA::_duplicate (poa);
+
// Get the naming context ptr to NameService.
// ACE_TRY_CHECK;
@@ -52,14 +59,14 @@ TAO_Concurrency_Server::init (CORBA::ORB_var &orb,
PortableServer::string_to_ObjectId ("ConcurrencyService");
poa->activate_object_with_id (id.in (),
- &lock_set_factory_
+ &this->lock_set_factory_
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
// Stringify the objref we'll be implementing, and print it to
// stdout. Someone will take that string and give it to a
// client. Then release the object.
- CORBA::Object_var obj =
+ obj =
poa->id_to_reference (id.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
@@ -68,7 +75,7 @@ TAO_Concurrency_Server::init (CORBA::ORB_var &orb,
orb->object_to_string (obj.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
-
+
ACE_DEBUG ((LM_DEBUG,
"listening as object <%s>\n",
str.in ()));
@@ -77,12 +84,40 @@ TAO_Concurrency_Server::init (CORBA::ORB_var &orb,
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
"Concurrency Service");
+ return CORBA::Object::_nil ();
}
ACE_ENDTRY;
- return 0;
+
+ return obj._retn ();
}
-// Get the lock set factory.
+int
+TAO_Concurrency_Server::fini (void)
+{
+ ACE_DECLARE_NEW_CORBA_ENV;
+ ACE_TRY
+ {
+ PortableServer::ObjectId_var id =
+ this->poa_->servant_to_id (&this->lock_set_factory_);
+
+ this->poa_->deactivate_object (id.in ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ if (TAO_debug_level > 0)
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ ACE_TEXT ("TAO_Concurrency_Server"));
+ }
+
+ return -1;
+ }
+ ACE_ENDTRY;
+
+ return 0;
+}
CC_LockSetFactory *
TAO_Concurrency_Server::GetLockSetFactory(void)
@@ -90,8 +125,6 @@ TAO_Concurrency_Server::GetLockSetFactory(void)
return &this->lock_set_factory_;
}
-// Destructor.
-
TAO_Concurrency_Server::~TAO_Concurrency_Server (void)
{
}