TAO_PortableServer
2.0.8
|
Base class for skeletons and servants. More...
#include <Servant_Base.h>
Public Types | |
typedef CORBA::Object | _stub_type |
Useful for template programming. | |
typedef CORBA::Object_ptr | _stub_ptr_type |
typedef CORBA::Object_var | _stub_var_type |
Public Member Functions | |
virtual | ~TAO_ServantBase (void) |
Destructor. | |
virtual PortableServer::POA_ptr | _default_POA (void) |
Returns the default POA for this servant. | |
virtual CORBA::Boolean | _is_a (const char *logical_type_id) |
Local implementation of the CORBA::Object::_is_a method. | |
virtual CORBA::Boolean | _non_existent (void) |
Default _non_existent: always returns false. | |
virtual CORBA::InterfaceDef_ptr | _get_interface (void) |
Query the Interface Repository for the interface definition. | |
virtual CORBA::Object_ptr | _get_component (void) |
Default _get_component: always returns CORBA::Object::_nil(). | |
virtual char * | _repository_id (void) |
Get the repository id. | |
virtual TAO_Stub * | _create_stub (void) |
This is an auxiliary method for _this() and _narrow(). | |
virtual void | _dispatch (TAO_ServerRequest &request, TAO::Portable_Server::Servant_Upcall *servant_upcall)=0 |
virtual int | _find (const char *opname, TAO_Skeleton &skelfunc, const size_t length=0) |
virtual int | _find (const char *opname, TAO_Collocated_Skeleton &skelfunc, TAO::Collocation_Strategy st, const size_t length=0) |
virtual const char * | _interface_repository_id (void) const =0 |
Get this interface's repository id (TAO specific). | |
virtual void | _collocated_dispatch (::CORBA::Object_ptr obj,::CORBA::Object_out forward_obj, bool &is_forwarded, TAO::Argument **args, int num_args, const char *op, size_t op_len, TAO::Collocation_Strategy strategy) |
Reference Counting Operations | |
virtual void | _add_ref (void) |
Increase reference count by one. | |
virtual void | _remove_ref (void) |
virtual CORBA::ULong | _refcount_value (void) const |
Static Public Member Functions | |
static void | _is_a_skel (TAO_ServerRequest &req, TAO::Portable_Server::Servant_Upcall *servant_upcall, TAO_ServantBase *servant) |
static void | _is_a_thru_poa_skel (TAO_ServerRequest &server_request, TAO::Portable_Server::Servant_Upcall *servant_upcall, TAO_ServantBase *servant) |
static void | _non_existent_skel (TAO_ServerRequest &req, TAO::Portable_Server::Servant_Upcall *servant_upcall, TAO_ServantBase *servant) |
static void | _non_existent_thru_poa_skel (TAO_ServerRequest &server_request, TAO::Portable_Server::Servant_Upcall *servant_upcall, TAO_ServantBase *servant) |
static void | _interface_skel (TAO_ServerRequest &req, TAO::Portable_Server::Servant_Upcall *servant_upcall, TAO_ServantBase *servant) |
static void | _component_skel (TAO_ServerRequest &req, TAO::Portable_Server::Servant_Upcall *servant_upcall, TAO_ServantBase *servant) |
static void | _component_thru_poa_skel (TAO_ServerRequest &server_request, TAO::Portable_Server::Servant_Upcall *servant_upcall, TAO_ServantBase *servant) |
static void | _repository_id_skel (TAO_ServerRequest &req, TAO::Portable_Server::Servant_Upcall *servant_upcall, TAO_ServantBase *servant) |
static void | _repository_id_thru_poa_skel (TAO_ServerRequest &server_request, TAO::Portable_Server::Servant_Upcall *servant_upcall, TAO_ServantBase *servant) |
Protected Member Functions | |
TAO_ServantBase (void) | |
Default constructor, only derived classes can be created. | |
TAO_ServantBase (const TAO_ServantBase &) | |
Copy constructor, protected so no instances can be created. | |
TAO_ServantBase & | operator= (const TAO_ServantBase &) |
Assignment operator. | |
void | synchronous_upcall_dispatch (TAO_ServerRequest &req, TAO::Portable_Server::Servant_Upcall *servant_upcall, TAO_ServantBase *derived_this) |
void | asynchronous_upcall_dispatch (TAO_ServerRequest &req, TAO::Portable_Server::Servant_Upcall *servant_upcall, TAO_ServantBase *derived_this) |
Protected Attributes | |
ACE_Atomic_Op< TAO_SYNCH_MUTEX, unsigned long > | ref_count_ |
Reference counter. | |
TAO_Operation_Table * | optable_ |
Base class for skeletons and servants.
The POA spec requires that all servants inherit from this class' base class.
An instance of a servant class derived from ServantBase initially has a reference count of one. Invoking _add_ref on the servant instance increases its reference count by one. Invoking _remove_ref on the servant instance decreases its reference count by one; if the resulting reference count equals zero, _remove_ref invokes delete on its this pointer in order to destroy the servant. For ORBs that operate in multi-threaded environments, the implementations of _add_ref and _remove_ref that the ServantBase class provides shall be thread-safe.
Like ServantBase supports copy construction and the default assignment operation. Copy construction always sets the reference count of the new servant instance to one. The default assignment implementation merely returns *this and does not affect the reference count.
Reimplemented in POA_CORBA::Policy.
Useful for template programming.
Reimplemented in POA_CORBA::Policy.
Reimplemented in POA_CORBA::Policy.
TAO_ServantBase::~TAO_ServantBase | ( | void | ) | [virtual] |
Destructor.
TAO_ServantBase::TAO_ServantBase | ( | void | ) | [protected] |
Default constructor, only derived classes can be created.
TAO_ServantBase::TAO_ServantBase | ( | const TAO_ServantBase & | rhs | ) | [protected] |
Copy constructor, protected so no instances can be created.
void TAO_ServantBase::_add_ref | ( | void | ) | [virtual] |
Increase reference count by one.
Implements TAO_Abstract_ServantBase.
void TAO_ServantBase::_collocated_dispatch | ( | ::CORBA::Object_ptr | obj, |
::CORBA::Object_out | forward_obj, | ||
bool & | is_forwarded, | ||
TAO::Argument ** | args, | ||
int | num_args, | ||
const char * | op, | ||
size_t | op_len, | ||
TAO::Collocation_Strategy | strategy | ||
) | [virtual] |
Implements TAO_Abstract_ServantBase.
void TAO_ServantBase::_component_skel | ( | TAO_ServerRequest & | req, |
TAO::Portable_Server::Servant_Upcall * | servant_upcall, | ||
TAO_ServantBase * | servant | ||
) | [static] |
void TAO_ServantBase::_component_thru_poa_skel | ( | TAO_ServerRequest & | server_request, |
TAO::Portable_Server::Servant_Upcall * | servant_upcall, | ||
TAO_ServantBase * | servant | ||
) | [static] |
TAO_Stub * TAO_ServantBase::_create_stub | ( | void | ) | [virtual] |
This is an auxiliary method for _this() and _narrow().
Implements TAO_Abstract_ServantBase.
PortableServer::POA_ptr TAO_ServantBase::_default_POA | ( | void | ) | [virtual] |
Returns the default POA for this servant.
Reimplemented in POA_CORBA::Policy_tie< T >.
virtual void TAO_ServantBase::_dispatch | ( | TAO_ServerRequest & | request, |
TAO::Portable_Server::Servant_Upcall * | servant_upcall | ||
) | [pure virtual] |
Dispatches a request to the object: find the operation, cast the type to the most derived type, demarshall all the parameters from the request and finally invokes the operation, storing the results and out parameters (if any) or the exceptions thrown into request.
Implements TAO_Abstract_ServantBase.
Implemented in POA_CORBA::Policy.
int TAO_ServantBase::_find | ( | const char * | opname, |
TAO_Skeleton & | skelfunc, | ||
const size_t | length = 0 |
||
) | [virtual] |
Please see documentation in tao/Abstract_Servant_Base.h for details.
Implements TAO_Abstract_ServantBase.
int TAO_ServantBase::_find | ( | const char * | opname, |
TAO_Collocated_Skeleton & | skelfunc, | ||
TAO::Collocation_Strategy | st, | ||
const size_t | length = 0 |
||
) | [virtual] |
Implements TAO_Abstract_ServantBase.
CORBA::Object_ptr TAO_ServantBase::_get_component | ( | void | ) | [virtual] |
Default _get_component: always returns CORBA::Object::_nil().
Implements TAO_Abstract_ServantBase.
CORBA::InterfaceDef_ptr TAO_ServantBase::_get_interface | ( | void | ) | [virtual] |
Query the Interface Repository for the interface definition.
Implements TAO_Abstract_ServantBase.
virtual const char* TAO_ServantBase::_interface_repository_id | ( | void | ) | const [pure virtual] |
Get this interface's repository id (TAO specific).
Implements TAO_Abstract_ServantBase.
Implemented in POA_CORBA::Policy.
void TAO_ServantBase::_interface_skel | ( | TAO_ServerRequest & | req, |
TAO::Portable_Server::Servant_Upcall * | servant_upcall, | ||
TAO_ServantBase * | servant | ||
) | [static] |
CORBA::Boolean TAO_ServantBase::_is_a | ( | const char * | logical_type_id | ) | [virtual] |
Local implementation of the CORBA::Object::_is_a method.
Implements TAO_Abstract_ServantBase.
Reimplemented in POA_CORBA::Policy.
void TAO_ServantBase::_is_a_skel | ( | TAO_ServerRequest & | req, |
TAO::Portable_Server::Servant_Upcall * | servant_upcall, | ||
TAO_ServantBase * | servant | ||
) | [static] |
void TAO_ServantBase::_is_a_thru_poa_skel | ( | TAO_ServerRequest & | server_request, |
TAO::Portable_Server::Servant_Upcall * | servant_upcall, | ||
TAO_ServantBase * | servant | ||
) | [static] |
CORBA::Boolean TAO_ServantBase::_non_existent | ( | void | ) | [virtual] |
Default _non_existent: always returns false.
Implements TAO_Abstract_ServantBase.
void TAO_ServantBase::_non_existent_skel | ( | TAO_ServerRequest & | req, |
TAO::Portable_Server::Servant_Upcall * | servant_upcall, | ||
TAO_ServantBase * | servant | ||
) | [static] |
void TAO_ServantBase::_non_existent_thru_poa_skel | ( | TAO_ServerRequest & | server_request, |
TAO::Portable_Server::Servant_Upcall * | servant_upcall, | ||
TAO_ServantBase * | servant | ||
) | [static] |
CORBA::ULong TAO_ServantBase::_refcount_value | ( | void | ) | const [virtual] |
Returns the current reference count value.
Implements TAO_Abstract_ServantBase.
void TAO_ServantBase::_remove_ref | ( | void | ) | [virtual] |
Decreases reference count by one; if the resulting reference count equals zero, _remove_ref invokes delete on its this pointer in order to destroy the servant.
Implements TAO_Abstract_ServantBase.
char * TAO_ServantBase::_repository_id | ( | void | ) | [virtual] |
Get the repository id.
Implements TAO_Abstract_ServantBase.
void TAO_ServantBase::_repository_id_skel | ( | TAO_ServerRequest & | req, |
TAO::Portable_Server::Servant_Upcall * | servant_upcall, | ||
TAO_ServantBase * | servant | ||
) | [static] |
void TAO_ServantBase::_repository_id_thru_poa_skel | ( | TAO_ServerRequest & | server_request, |
TAO::Portable_Server::Servant_Upcall * | servant_upcall, | ||
TAO_ServantBase * | servant | ||
) | [static] |
void TAO_ServantBase::asynchronous_upcall_dispatch | ( | TAO_ServerRequest & | req, |
TAO::Portable_Server::Servant_Upcall * | servant_upcall, | ||
TAO_ServantBase * | derived_this | ||
) | [protected] |
TAO_ServantBase & TAO_ServantBase::operator= | ( | const TAO_ServantBase & | rhs | ) | [protected] |
Assignment operator.
void TAO_ServantBase::synchronous_upcall_dispatch | ( | TAO_ServerRequest & | req, |
TAO::Portable_Server::Servant_Upcall * | servant_upcall, | ||
TAO_ServantBase * | derived_this | ||
) | [protected] |
TAO_Operation_Table* TAO_ServantBase::optable_ [protected] |
The operation table for this servant. It is initialized by the most derived class.
ACE_Atomic_Op<TAO_SYNCH_MUTEX, unsigned long> TAO_ServantBase::ref_count_ [protected] |
Reference counter.