#include <Servant_Activator.h>
Public Member Functions | |
Servant_Activator (CORBA::ORB_ptr o) | |
virtual | ~Servant_Activator (void) |
bool | update_port_activator (const PortableServer::ObjectId &oid) |
virtual PortableServer::Servant | incarnate (const PortableServer::ObjectId &oid, PortableServer::POA_ptr poa) |
Template methods overridden to get callbacks. | |
virtual void | etherealize (const PortableServer::ObjectId &oid, PortableServer::POA_ptr adapter, PortableServer::Servant servant, CORBA::Boolean cleanup_in_progress, CORBA::Boolean remaining_activations) |
bool | register_port_activator (Port_Activator *pa) |
Local helper methods. | |
Private Types | |
typedef ACE_Array_Base < Port_Activator * > | Port_Activators |
Private Attributes | |
CORBA::ORB_var | orb_ |
Pointer to our ORB. | |
Port_Activators | pa_ |
Array of port activators. | |
size_t | slot_index_ |
Running index of the slot that has been just filled in. | |
TAO_SYNCH_MUTEX | mutex_ |
Mutex that synchronizes access to the array. |
This class acts like a factory in some sense. This factory is registered with the POA with RETAIN policy. When the factory gets a call back as part of the upcall, this factory looks at the list of port activators registered, uses the OID to pick the right one (yes a linear algorithm is used), calls activate () on it which returns the servant for *that* port.
typedef ACE_Array_Base<Port_Activator *> CIAO::Servant_Activator::Port_Activators [private] |
@ This should be changed at some point of time so that we don't land up with a linear algorithm
CIAO::Servant_Activator::Servant_Activator | ( | CORBA::ORB_ptr | o | ) |
CIAO::Servant_Activator::~Servant_Activator | ( | void | ) | [virtual] |
bool CIAO::Servant_Activator::update_port_activator | ( | const PortableServer::ObjectId & | oid | ) |
PortableServer::Servant CIAO::Servant_Activator::incarnate | ( | const PortableServer::ObjectId & | oid, | |
PortableServer::POA_ptr | poa | |||
) | [virtual] |
Template methods overridden to get callbacks.
If you would like to know the details of the following two methods, please PortableServer documentation. This is probably not the place to document what these mean.
void CIAO::Servant_Activator::etherealize | ( | const PortableServer::ObjectId & | oid, | |
PortableServer::POA_ptr | adapter, | |||
PortableServer::Servant | servant, | |||
CORBA::Boolean | cleanup_in_progress, | |||
CORBA::Boolean | remaining_activations | |||
) | [virtual] |
bool CIAO::Servant_Activator::register_port_activator | ( | Port_Activator * | pa | ) |
Local helper methods.
CORBA::ORB_var CIAO::Servant_Activator::orb_ [private] |
Pointer to our ORB.
Port_Activators CIAO::Servant_Activator::pa_ [private] |
Array of port activators.
size_t CIAO::Servant_Activator::slot_index_ [private] |
Running index of the slot that has been just filled in.
TAO_SYNCH_MUTEX CIAO::Servant_Activator::mutex_ [private] |
Mutex that synchronizes access to the array.