TAO_Notify_POA_Helper Class Reference

POA Abstraction. More...

#include <POA_Helper.h>

Inheritance diagram for TAO_Notify_POA_Helper:

Inheritance graph
[legend]
Collaboration diagram for TAO_Notify_POA_Helper:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 TAO_Notify_POA_Helper (void)
 Default Constructor.

void init (PortableServer::POA_ptr parent_poa, const char *poa_name)
 Create a new PortableServer::POA.

void init (PortableServer::POA_ptr parent_poa)
 Create a new PortableServer::POA. The name is chosen at random.

virtual ~TAO_Notify_POA_Helper ()
 Destructor.

PortableServer::POA_ptr poa (void)
 Get underlying POA.

void destroy ()
 Destroy underlying POA.

CORBA::Object_ptr activate (PortableServer::Servant servant, CORBA::Long &id)
 Activate Object, the POA will assign an ID and return its value.

CORBA::Object_ptr activate_with_id (PortableServer::Servant servant, CORBA::Long id)
 Activate Object, using existing ID.

void deactivate (CORBA::Long id) const
 Deactivate Object with ID.

CORBA::Object_ptr id_to_reference (CORBA::Long id) const
 Convert ID to reference.

PortableServer::ServantBasereference_to_servant (CORBA::Object_ptr ptr) const
 Convert reference to pointer to servant.

CORBA::Object_ptr servant_to_reference (PortableServer::ServantBase *servant) const

Protected Member Functions

virtual void set_policy (PortableServer::POA_ptr parent_poa, CORBA::PolicyList &policy_list)
 Set default POA policies.

void create_i (PortableServer::POA_ptr parent_poa, const char *poa_name, CORBA::PolicyList &policy_list)
 Apply the polices and create child POA.

ACE_CString get_unique_id (void)
 Generate a unique id for each POA created.

PortableServer::ObjectIdlong_to_ObjectId (CORBA::Long id) const
 Convert id to ObjectID.


Protected Attributes

PortableServer::POA_var poa_
 POA.

TAO_Notify_ID_Factory id_factory_
 ID Factory for objects.


Detailed Description

POA Abstraction.

Definition at line 36 of file POA_Helper.h.


Constructor & Destructor Documentation

TAO_BEGIN_VERSIONED_NAMESPACE_DECL TAO_Notify_POA_Helper::TAO_Notify_POA_Helper void   ) 
 

Default Constructor.

Definition at line 19 of file POA_Helper.cpp.

00020 {
00021 }

TAO_Notify_POA_Helper::~TAO_Notify_POA_Helper  )  [virtual]
 

Destructor.

Definition at line 23 of file POA_Helper.cpp.

00024 {
00025 }


Member Function Documentation

CORBA::Object_ptr TAO_Notify_POA_Helper::activate PortableServer::Servant  servant,
CORBA::Long id
 

Activate Object, the POA will assign an ID and return its value.

Definition at line 131 of file POA_Helper.cpp.

References ACE_CHECK_RETURN, ACE_DEBUG, ACE_ENV_ARG_PARAMETER, DEBUG_LEVEL, TAO_Notify_ID_Factory::id(), id_factory_, LM_DEBUG, and long_to_ObjectId().

Referenced by TAO_Notify_Object::activate().

00132 {
00133   // Generate a new ID.
00134   id = this->id_factory_.id ();
00135 
00136   if (DEBUG_LEVEL > 0)
00137     ACE_DEBUG ((LM_DEBUG, "Activating object with id = %d in  POA : %s\n", id, this->poa_->the_name ()));
00138 
00139   // Convert CORBA::Long to ObjectId
00140   PortableServer::ObjectId_var oid =
00141     this->long_to_ObjectId (id ACE_ENV_ARG_PARAMETER);
00142   ACE_CHECK_RETURN (CORBA::Object::_nil ());
00143 
00144   poa_->activate_object_with_id (oid.in (),
00145                                  servant
00146                                  ACE_ENV_ARG_PARAMETER);
00147   ACE_CHECK_RETURN (CORBA::Object::_nil ());
00148 
00149   return poa_->id_to_reference (oid.in ()
00150                                 ACE_ENV_ARG_PARAMETER);
00151 }

CORBA::Object_ptr TAO_Notify_POA_Helper::activate_with_id PortableServer::Servant  servant,
CORBA::Long  id
 

Activate Object, using existing ID.

Definition at line 154 of file POA_Helper.cpp.

References ACE_CHECK_RETURN, ACE_DEBUG, ACE_ENV_ARG_PARAMETER, DEBUG_LEVEL, id_factory_, LM_DEBUG, long_to_ObjectId(), and TAO_Notify_ID_Factory::set_last_used().

Referenced by TAO_Notify_Object::activate().

00155 {
00156   if (DEBUG_LEVEL > 0)
00157     ACE_DEBUG ((LM_DEBUG, "Activating object with existing id = %d in  POA : %s\n", id, this->poa_->the_name ()));
00158   this->id_factory_.set_last_used (id);
00159 
00160   // Convert CORBA::Long to ObjectId
00161   PortableServer::ObjectId_var oid =
00162     this->long_to_ObjectId (id ACE_ENV_ARG_PARAMETER);
00163   ACE_CHECK_RETURN (CORBA::Object::_nil ());
00164 
00165   poa_->activate_object_with_id (oid.in (),
00166                                  servant
00167                                  ACE_ENV_ARG_PARAMETER);
00168   ACE_CHECK_RETURN (CORBA::Object::_nil ());
00169 
00170   return poa_->id_to_reference (oid.in ()
00171                                 ACE_ENV_ARG_PARAMETER);
00172 }

void TAO_Notify_POA_Helper::create_i PortableServer::POA_ptr  parent_poa,
const char *  poa_name,
CORBA::PolicyList policy_list
[protected]
 

Apply the polices and create child POA.

Definition at line 76 of file POA_Helper.cpp.

References ACE_CHECK, ACE_DEBUG, ACE_ENV_ARG_PARAMETER, ACE_ENV_SINGLE_ARG_PARAMETER, DEBUG_LEVEL, and LM_DEBUG.

Referenced by TAO_Notify_RT_POA_Helper::init(), and init().

00077 {
00078   PortableServer::POAManager_var manager =
00079     parent_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER);
00080   ACE_CHECK;
00081 
00082   // Create the child POA.
00083   this->poa_ = parent_poa->create_POA (poa_name,
00084                                        manager.in (),
00085                                        policy_list
00086                                        ACE_ENV_ARG_PARAMETER);
00087   ACE_CHECK;
00088 
00089   if (DEBUG_LEVEL > 0)
00090     ACE_DEBUG ((LM_DEBUG, "Created POA : %s\n", this->poa_->the_name ()));
00091   /*
00092   // Destroy the policies
00093   for (CORBA::ULong index = 0; index < policy_list.length (); ++index)
00094     {
00095       policy_list[index]->destroy ();
00096     }
00097   */
00098 }

void TAO_Notify_POA_Helper::deactivate CORBA::Long  id  )  const
 

Deactivate Object with ID.

Definition at line 175 of file POA_Helper.cpp.

References ACE_CHECK, ACE_ENV_ARG_PARAMETER, and long_to_ObjectId().

Referenced by TAO_Notify_Proxy::deactivate(), and TAO_Notify_Object::deactivate().

00176 {
00177   // Convert CORBA::Long to ObjectId
00178   PortableServer::ObjectId_var oid =
00179     this->long_to_ObjectId (id ACE_ENV_ARG_PARAMETER);
00180   ACE_CHECK;
00181 
00182   poa_->deactivate_object (oid.in () ACE_ENV_ARG_PARAMETER);
00183 }

void TAO_Notify_POA_Helper::destroy  ) 
 

Destroy underlying POA.

Definition at line 212 of file POA_Helper.cpp.

References ACE_ENV_ARG_PARAMETER.

Referenced by TAO_Notify_Object::destroy_object_poa(), and TAO_Notify_Object::destroy_proxy_poa().

00213 {
00214   poa_->destroy (1,0 ACE_ENV_ARG_PARAMETER);
00215  // The <wait_for_completion> flag = 0
00216 }

ACE_CString TAO_Notify_POA_Helper::get_unique_id void   )  [protected]
 

Generate a unique id for each POA created.

Factory for generating unique ids for the POAs.

Definition at line 28 of file POA_Helper.cpp.

References ACE_CString, TAO_Notify_ID_Factory::id(), and ACE_OS::itoa().

Referenced by TAO_Notify_RT_POA_Helper::init(), and init().

00029 {
00030   /// Factory for generating unique ids for the POAs.
00031   static TAO_Notify_ID_Factory poa_id_factory;
00032 
00033   char buf[32];
00034   ACE_OS::itoa (poa_id_factory.id (), buf, 10);
00035 
00036   return ACE_CString (buf);
00037 }

CORBA::Object_ptr TAO_Notify_POA_Helper::id_to_reference CORBA::Long  id  )  const
 

Convert ID to reference.

Definition at line 186 of file POA_Helper.cpp.

References ACE_CHECK_RETURN, ACE_ENV_ARG_PARAMETER, and long_to_ObjectId().

Referenced by TAO_Notify_Object::ref().

00187 {
00188   // Convert CORBA::Long to ObjectId
00189   PortableServer::ObjectId_var oid =
00190     this->long_to_ObjectId (id ACE_ENV_ARG_PARAMETER);
00191   ACE_CHECK_RETURN (CORBA::Object::_nil ());
00192 
00193   return poa_->id_to_reference (oid.in ()
00194                                 ACE_ENV_ARG_PARAMETER);
00195 }

void TAO_Notify_POA_Helper::init PortableServer::POA_ptr  parent_poa  ) 
 

Create a new PortableServer::POA. The name is chosen at random.

Reimplemented in TAO_Notify_RT_POA_Helper.

Definition at line 51 of file POA_Helper.cpp.

References ACE_CString, ACE_ENV_ARG_PARAMETER, get_unique_id(), and init().

00052 {
00053   ACE_CString child_poa_name = this->get_unique_id ();
00054 
00055   this->init (parent_poa, child_poa_name.c_str () ACE_ENV_ARG_PARAMETER);
00056 }

void TAO_Notify_POA_Helper::init PortableServer::POA_ptr  parent_poa,
const char *  poa_name
 

Create a new PortableServer::POA.

Definition at line 40 of file POA_Helper.cpp.

References ACE_CHECK, ACE_ENV_ARG_PARAMETER, create_i(), and set_policy().

Referenced by init(), and TAO_Notify_EventChannelFactory::init().

00041 {
00042   CORBA::PolicyList policy_list (2);
00043 
00044   this->set_policy (parent_poa, policy_list ACE_ENV_ARG_PARAMETER);
00045   ACE_CHECK;
00046 
00047   this->create_i (parent_poa, poa_name, policy_list ACE_ENV_ARG_PARAMETER);
00048 }

PortableServer::ObjectId * TAO_Notify_POA_Helper::long_to_ObjectId CORBA::Long  id  )  const [protected]
 

Convert id to ObjectID.

Definition at line 101 of file POA_Helper.cpp.

References ACE_NEW_THROW_EX, and ACE_OS::memcpy().

Referenced by activate(), activate_with_id(), deactivate(), and id_to_reference().

00102 {
00103   // Modified code from string_to_ObjectId ..
00104   //
00105 
00106   CORBA::ULong buffer_size = 4;
00107 
00108   // Create the buffer for the Id
00109   CORBA::Octet *buffer = PortableServer::ObjectId::allocbuf (buffer_size);
00110 
00111   // Copy the contents
00112   ACE_OS::memcpy (buffer, (char*)&id, buffer_size);
00113 
00114   // @@ Pradeep: TAO guarantees that Long is 4 bytes wide, but the
00115   // standard only guarantees that it is at least 4 bytes wide. You
00116   // may want to think about that....
00117 
00118   // Create and return a new ID
00119   PortableServer::ObjectId *obj_id = 0;
00120   ACE_NEW_THROW_EX (obj_id,
00121                     PortableServer::ObjectId (buffer_size,
00122                                               buffer_size,
00123                                               buffer,
00124                                               1),
00125                     CORBA::NO_MEMORY ());
00126 
00127   return obj_id;
00128 }

TAO_BEGIN_VERSIONED_NAMESPACE_DECL ACE_INLINE PortableServer::POA_ptr TAO_Notify_POA_Helper::poa void   ) 
 

Get underlying POA.

Definition at line 8 of file POA_Helper.inl.

00009 {
00010   return this->poa_.in ();
00011 }

PortableServer::ServantBase * TAO_Notify_POA_Helper::reference_to_servant CORBA::Object_ptr  ptr  )  const
 

Convert reference to pointer to servant.

Definition at line 198 of file POA_Helper.cpp.

References ACE_ENV_ARG_PARAMETER.

00199 {
00200   return poa_->reference_to_servant (ptr ACE_ENV_ARG_PARAMETER);
00201 }

CORBA::Object_ptr TAO_Notify_POA_Helper::servant_to_reference PortableServer::ServantBase servant  )  const
 

Definition at line 204 of file POA_Helper.cpp.

References ACE_ENV_ARG_PARAMETER.

Referenced by TAO_Notify_EventChannel::load_child().

00206 {
00207   return poa_->servant_to_reference (servant ACE_ENV_ARG_PARAMETER);
00208 }

void TAO_Notify_POA_Helper::set_policy PortableServer::POA_ptr  parent_poa,
CORBA::PolicyList policy_list
[protected, virtual]
 

Set default POA policies.

Definition at line 59 of file POA_Helper.cpp.

References ACE_CHECK, and ACE_ENV_ARG_PARAMETER.

Referenced by TAO_Notify_RT_POA_Helper::init(), and init().

00060 {
00061   policy_list.length (2);
00062 
00063   policy_list[0] =
00064     parent_poa->create_id_uniqueness_policy (PortableServer::UNIQUE_ID
00065                                              ACE_ENV_ARG_PARAMETER);
00066   ACE_CHECK;
00067 
00068   policy_list[1] =
00069     parent_poa->create_id_assignment_policy (PortableServer::USER_ID
00070                                              ACE_ENV_ARG_PARAMETER);
00071   ACE_CHECK;
00072 }


Member Data Documentation

TAO_Notify_ID_Factory TAO_Notify_POA_Helper::id_factory_ [protected]
 

ID Factory for objects.

Definition at line 104 of file POA_Helper.h.

Referenced by activate(), and activate_with_id().

PortableServer::POA_var TAO_Notify_POA_Helper::poa_ [protected]
 

POA.

Definition at line 101 of file POA_Helper.h.


The documentation for this class was generated from the following files:
Generated on Thu Nov 9 13:32:31 2006 for TAO_CosNotification by doxygen 1.3.6