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_persistent (PortableServer::POA_ptr parent_poa, const char *poa_name)
 Create a new persistent 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 (void)
 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
ACE_CString get_unique_id (void)
 Generate a unique id for each POA created.


Protected Member Functions

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

virtual void set_persistent_policy (PortableServer::POA_ptr parent_poa, CORBA::PolicyList &policy_list)
 Set persistent 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.

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 154 of file POA_Helper.cpp.

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

Referenced by TAO_Notify_Object::activate().

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

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

Activate Object, using existing ID.

Definition at line 177 of file POA_Helper.cpp.

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

Referenced by TAO_Notify_Object::activate().

00178 {
00179   if (DEBUG_LEVEL > 0)
00180     {
00181       CORBA::String_var the_name = this->poa_->the_name ();
00182       ACE_DEBUG ((LM_DEBUG, "Activating object with existing id = %d in  POA : %s\n", id, the_name.in ()));
00183     }
00184   this->id_factory_.set_last_used (id);
00185 
00186   // Convert CORBA::Long to ObjectId
00187   PortableServer::ObjectId_var oid =
00188     this->long_to_ObjectId (id);
00189 
00190   poa_->activate_object_with_id (oid.in (),
00191                                  servant);
00192 
00193   return poa_->id_to_reference (oid.in ());
00194 }

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 98 of file POA_Helper.cpp.

References ACE_DEBUG, DEBUG_LEVEL, and LM_DEBUG.

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

00099 {
00100   PortableServer::POAManager_var manager =
00101     parent_poa->the_POAManager ();
00102 
00103   // Create the child POA.
00104   this->poa_ = parent_poa->create_POA (poa_name,
00105                                        manager.in (),
00106                                        policy_list);
00107 
00108   if (DEBUG_LEVEL > 0)
00109     {
00110       CORBA::String_var the_name = this->poa_->the_name ();
00111       ACE_DEBUG ((LM_DEBUG, "Created POA : %s\n", the_name.in ()));
00112     }
00113 
00114   /*
00115   // Destroy the policies
00116   for (CORBA::ULong index = 0; index < policy_list.length (); ++index)
00117     {
00118       policy_list[index]->destroy ();
00119     }
00120   */
00121 }

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

Deactivate Object with ID.

Definition at line 197 of file POA_Helper.cpp.

References long_to_ObjectId().

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

00198 {
00199   // Convert CORBA::Long to ObjectId
00200   PortableServer::ObjectId_var oid =
00201     this->long_to_ObjectId (id);
00202 
00203   poa_->deactivate_object (oid.in ());
00204 }

void TAO_Notify_POA_Helper::destroy void   ) 
 

Destroy underlying POA.

Definition at line 231 of file POA_Helper.cpp.

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

00232 {
00233   poa_->destroy (1,0);
00234  // The <wait_for_completion> flag = 0
00235 }

ACE_CString TAO_Notify_POA_Helper::get_unique_id void   ) 
 

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(), init(), and TAO_Notify_EventChannelFactory::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 207 of file POA_Helper.cpp.

References long_to_ObjectId().

Referenced by TAO_Notify_Object::ref().

00208 {
00209   // Convert CORBA::Long to ObjectId
00210   PortableServer::ObjectId_var oid =
00211     this->long_to_ObjectId (id);
00212 
00213   return poa_->id_to_reference (oid.in ());
00214 }

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 62 of file POA_Helper.cpp.

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

00063 {
00064   ACE_CString child_poa_name = this->get_unique_id ();
00065 
00066   this->init (parent_poa, child_poa_name.c_str ());
00067 }

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 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);
00045 
00046   this->create_i (parent_poa, poa_name, policy_list);
00047 }

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

Create a new persistent PortableServer::POA.

Definition at line 51 of file POA_Helper.cpp.

References create_i(), and set_persistent_policy().

Referenced by TAO_Notify_EventChannelFactory::init().

00052 {
00053   CORBA::PolicyList policy_list (2);
00054 
00055   this->set_persistent_policy (parent_poa, policy_list);
00056 
00057   this->create_i (parent_poa, poa_name, policy_list);
00058 }

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

Convert id to ObjectID.

Definition at line 124 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().

00125 {
00126   // Modified code from string_to_ObjectId ..
00127   //
00128 
00129   CORBA::ULong buffer_size = 4;
00130 
00131   // Create the buffer for the Id
00132   CORBA::Octet *buffer = PortableServer::ObjectId::allocbuf (buffer_size);
00133 
00134   // Copy the contents
00135   ACE_OS::memcpy (buffer, (char*)&id, buffer_size);
00136 
00137   // @@ Pradeep: TAO guarantees that Long is 4 bytes wide, but the
00138   // standard only guarantees that it is at least 4 bytes wide. You
00139   // may want to think about that....
00140 
00141   // Create and return a new ID
00142   PortableServer::ObjectId *obj_id = 0;
00143   ACE_NEW_THROW_EX (obj_id,
00144                     PortableServer::ObjectId (buffer_size,
00145                                               buffer_size,
00146                                               buffer,
00147                                               1),
00148                     CORBA::NO_MEMORY ());
00149 
00150   return obj_id;
00151 }

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.

Referenced by TAO_Notify_EventChannel::default_supplier_admin().

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 217 of file POA_Helper.cpp.

Referenced by TAO_Notify_EventChannel::default_consumer_admin().

00218 {
00219   return poa_->reference_to_servant (ptr);
00220 }

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

Definition at line 223 of file POA_Helper.cpp.

Referenced by TAO_Notify_EventChannel::load_child().

00225 {
00226   return poa_->servant_to_reference (servant);
00227 }

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

Set persistent POA policies.

Definition at line 84 of file POA_Helper.cpp.

Referenced by init_persistent().

00085 {
00086   policy_list.length (2);
00087 
00088   policy_list[0] =
00089     parent_poa->create_lifespan_policy (PortableServer::PERSISTENT);
00090 
00091   policy_list[1] =
00092     parent_poa->create_id_assignment_policy (PortableServer::USER_ID);
00093 }

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 70 of file POA_Helper.cpp.

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

00071 {
00072   policy_list.length (2);
00073 
00074   policy_list[0] =
00075     parent_poa->create_id_uniqueness_policy (PortableServer::UNIQUE_ID);
00076 
00077   policy_list[1] =
00078     parent_poa->create_id_assignment_policy (PortableServer::USER_ID);
00079 }


Member Data Documentation

TAO_Notify_ID_Factory TAO_Notify_POA_Helper::id_factory_ [protected]
 

ID Factory for objects.

Definition at line 109 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 106 of file POA_Helper.h.


The documentation for this class was generated from the following files:
Generated on Sun Jan 27 15:49:47 2008 for TAO_CosNotification by doxygen 1.3.6