TAO_PortableServer  2.3.3
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
TAO_ServantBase Class Referenceabstract

Base class for skeletons and servants. More...

#include <Servant_Base.h>

Inheritance diagram for TAO_ServantBase:
Inheritance graph
[legend]
Collaboration diagram for TAO_ServantBase:
Collaboration graph
[legend]

Public Types

typedef CORBA::Object _stub_type
 Useful for template programming. More...
 
typedef CORBA::Object_ptr _stub_ptr_type
 
typedef CORBA::Object_var _stub_var_type
 

Public Member Functions

virtual ~TAO_ServantBase (void)
 Destructor. More...
 
virtual PortableServer::POA_ptr _default_POA (void)
 Returns the default POA for this servant. More...
 
virtual CORBA::Boolean _is_a (const char *logical_type_id)
 Local implementation of the CORBA::Object::_is_a method. More...
 
virtual CORBA::Boolean _non_existent (void)
 Default _non_existent: always returns false. More...
 
virtual CORBA::InterfaceDef_ptr _get_interface (void)
 Query the Interface Repository for the interface definition. More...
 
virtual CORBA::Object_ptr _get_component (void)
 Default _get_component: always returns CORBA::Object::_nil(). More...
 
virtual char * _repository_id (void)
 Get the repository id. More...
 
virtual TAO_Stub_create_stub (void)
 This is an auxiliary method for _this() and _narrow(). More...
 
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). More...
 
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. More...
 
virtual void _remove_ref (void)
 
virtual CORBA::ULong _refcount_value (void) const
 
- Public Member Functions inherited from TAO_Abstract_ServantBase
virtual ~TAO_Abstract_ServantBase (void)
 

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. More...
 
 TAO_ServantBase (const TAO_ServantBase &)
 Copy constructor, protected so no instances can be created. More...
 
TAO_ServantBaseoperator= (const TAO_ServantBase &)
 Assignment operator. More...
 
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 Member Functions inherited from TAO_Abstract_ServantBase
 TAO_Abstract_ServantBase (void)
 
 TAO_Abstract_ServantBase (const TAO_Abstract_ServantBase &)
 
TAO_Abstract_ServantBaseoperator= (const TAO_Abstract_ServantBase &)
 

Protected Attributes

ACE_Atomic_Op< TAO_SYNCH_MUTEX, unsigned long > ref_count_
 Reference counter. More...
 
TAO_Operation_Tableoptable_
 

Detailed Description

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.

Member Typedef Documentation

Useful for template programming.

Constructor & Destructor Documentation

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.

Member Function Documentation

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
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.

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.

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
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.

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.

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

Member Data Documentation

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.


The documentation for this class was generated from the following files: