Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

TAO::Invocation_Adapter Class Reference

Generic interface for the invocation object visible to the IDL compiler. More...

#include <Invocation_Adapter.h>

Collaboration diagram for TAO::Invocation_Adapter:

Collaboration graph
[legend]
List of all members.

Public Methods

 Invocation_Adapter (CORBA::Object_ptr target, Argument **args, int arg_number, const char *operation, int op_len, Collocation_Proxy_Broker *cpb, TAO::Invocation_Type type=TAO_TWOWAY_INVOCATION, TAO::Invocation_Mode mode=TAO_SYNCHRONOUS_INVOCATION)
virtual void invoke (TAO::Exception_Data *ex, unsigned long ex_count ACE_ENV_ARG_DECL)
 Invoke the target, and used by the generated code.


Protected Methods

virtual void invoke_collocated (TAO_Stub *stub, TAO_Operation_Details &op ACE_ENV_ARG_DECL)
 Make a collocated call.

virtual void invoke_remote (TAO_Stub *, TAO_Operation_Details &op ACE_ENV_ARG_DECL)
 Makes a remote calls to the target.

bool get_timeout (TAO_Stub *stub, ACE_Time_Value &val)
TAO_Stubget_stub (ACE_ENV_SINGLE_ARG_DECL) const
 Helper method that extracts TAO_Stub from the target object.

void object_forwarded (CORBA::Object *&effective_target, TAO_Stub *stub ACE_ENV_ARG_DECL)
Helper methods for making different types of invocations.
These methods useful for various types of invocations like SII, AMI, DII and DSI. All the subclasses implement these methods to get the right behaviour at their level.

virtual Invocation_Status invoke_remote_i (TAO_Stub *, TAO_Operation_Details &op, CORBA::Object_ptr &effective_target, ACE_Time_Value *&max_wait_time ACE_ENV_ARG_DECL)
virtual Invocation_Status invoke_twoway (TAO_Operation_Details &op, CORBA::Object_ptr &effective_target, Profile_Transport_Resolver &r, ACE_Time_Value *&max_wait_time ACE_ENV_ARG_DECL)
 Helper method to make a two way invocation.

virtual Invocation_Status invoke_oneway (TAO_Operation_Details &op, CORBA::Object_ptr &effective_target, Profile_Transport_Resolver &r, ACE_Time_Value *&max_wait_time ACE_ENV_ARG_DECL)
 Helper method to make a one way invocation.


Protected Attributes

CORBA::Object_ptr target_
 The target object on which this invocation is carried out.

Argument ** args_
 Array of arguments for this operation.

int number_args_
 Number of arguments for this operation.

const char * operation_
 Name of the operation.

int op_len_
 String length of the operation name.

Collocation_Proxy_Brokercpb_
 Collocation proxy broker for this operation.

Invocation_Type type_
 The invocation type and mode.

Invocation_Mode mode_

Private Methods

 Invocation_Adapter (void)
 Dont allow default initializations.

Invocation_Adapter & operator= (const Invocation_Adapter &)

Detailed Description

Generic interface for the invocation object visible to the IDL compiler.

The main objective of this class is to adapt the type and invocation specific information declared in the IDL by the application and convert them as CORBA invocations to the target object. Implementation of this class knows how to make invocations on a collocated or a remote object.

This adapter class serves as the base class for various types of invocations like AMI, DII, DSI etc. Adapter classes for AMI, DII, DSI inherit from this class and their local behavioural information before kicking off an invocation.

@ More info.. Wafer thin inclusions All stuff created on stack Only handles starts and restarts


Constructor & Destructor Documentation

TAO::Invocation_Adapter::Invocation_Adapter CORBA::Object_ptr    target,
Argument **    args,
int    arg_number,
const char *    operation,
int    op_len,
Collocation_Proxy_Broker   cpb,
TAO::Invocation_Type    type = TAO_TWOWAY_INVOCATION,
TAO::Invocation_Mode    mode = TAO_SYNCHRONOUS_INVOCATION
 

Parameters:
target  Points to the object on which this invocation is being invoked.
args  Array of pointers to the argument list in the operation declaration. this includes the return, inout and out arguments.
arg_number  Number of arguments in the above array. This is the number of elements in the above array.
operation  The name of the operation being invoked.
ope_len  Number of charecters in the operation name. This is an optimization which helps us to avoid calling strlen () while creating a message format.
cpb  The collocation proxy broker for the target if one exists. This is useful especially to route the call to the collocated target.
type  The operation type which could be a oneway or two way operation. this information is available in the IDL file.
mode  Invocation mode. This information is also available in the IDL file and in the generated code.

TAO::Invocation_Adapter::Invocation_Adapter void    [private]
 

Dont allow default initializations.


Member Function Documentation

TAO_Stub * TAO::Invocation_Adapter::get_stub ACE_ENV_SINGLE_ARG_DECL    const [protected]
 

Helper method that extracts TAO_Stub from the target object.

bool TAO::Invocation_Adapter::get_timeout TAO_Stub   stub,
ACE_Time_Value   val
[protected]
 

Helper function that extracts the roundtrip timeout policies set in the ORB.

void TAO::Invocation_Adapter::invoke TAO::Exception_Data   ex,
unsigned long ex_count    ACE_ENV_ARG_DECL
[virtual]
 

Invoke the target, and used by the generated code.

The implementation decides whether the target is remote or collocated and takes the right decision.

Parameters:
ex  Array of exception data declared by the application in their IDL.
ex_count  Number of elements in the array.

virtual void TAO::Invocation_Adapter::invoke_collocated TAO_Stub   stub,
TAO_Operation_Details &op    ACE_ENV_ARG_DECL
[protected, virtual]
 

Make a collocated call.

This method checks whether the target is indeed collocated and if so, creates an object that takes care of making collocated invocations and calls invoke () on it. If the invoke () returns with a location forwarded reply, this method takes care of forwarding the request to the new target.

@NOTE: At this point of time the object that is created for making collocated invocations is too coarse grained to handle different messaging and invocation policies. This need to change in the future. Please take a look at the documentation in Collocated_Invocation.h for details.

Parameters:
stub  The stub object on which the invocation is made.
op  The operations details of the operation that is being invoked.

virtual Invocation_Status TAO::Invocation_Adapter::invoke_oneway TAO_Operation_Details   op,
CORBA::Object_ptr   effective_target,
Profile_Transport_Resolver   r,
ACE_Time_Value *&max_wait_time    ACE_ENV_ARG_DECL
[protected, virtual]
 

Helper method to make a one way invocation.

This method creates a synchronous oneway invocation object to which the actual task of request handling is delegated. Once the invocation returns this method checks whether the request is forwarded to a new location to take appropriate action.

void TAO::Invocation_Adapter::invoke_remote TAO_Stub  ,
TAO_Operation_Details &op    ACE_ENV_ARG_DECL
[protected, virtual]
 

Makes a remote calls to the target.

The stub pointer passed to this call has all the details about the remote object to which the invocation needs to be routed to. The implementation of this method takes care of reinvoking the target if it receives forwarding information or if the first invocation fails for some reason, like a loss of connection during send () etc.

virtual Invocation_Status TAO::Invocation_Adapter::invoke_remote_i TAO_Stub  ,
TAO_Operation_Details   op,
CORBA::Object_ptr   effective_target,
ACE_Time_Value *&max_wait_time    ACE_ENV_ARG_DECL
[protected, virtual]
 

Helper method that prepares the necessary stuff for a remote invocation.

virtual Invocation_Status TAO::Invocation_Adapter::invoke_twoway TAO_Operation_Details   op,
CORBA::Object_ptr   effective_target,
Profile_Transport_Resolver   r,
ACE_Time_Value *&max_wait_time    ACE_ENV_ARG_DECL
[protected, virtual]
 

Helper method to make a two way invocation.

This method creates a synchronous twoway invocation object to which the actual task of request handling is delegated. Once the invocation returns this method checks whether the request is forwarded to a new location.

void TAO::Invocation_Adapter::object_forwarded CORBA::Object *&    effective_target,
TAO_Stub *stub    ACE_ENV_ARG_DECL
[protected]
 

Helper method that takes care of setting the profiles within the stub object if the target gets forwarded

Invocation_Adapter& TAO::Invocation_Adapter::operator= const Invocation_Adapter &    [private]
 


Member Data Documentation

Argument** TAO::Invocation_Adapter::args_ [protected]
 

Array of arguments for this operation.

Collocation_Proxy_Broker* TAO::Invocation_Adapter::cpb_ [protected]
 

Collocation proxy broker for this operation.

Invocation_Mode TAO::Invocation_Adapter::mode_ [protected]
 

int TAO::Invocation_Adapter::number_args_ [protected]
 

Number of arguments for this operation.

This includes the return values too

int TAO::Invocation_Adapter::op_len_ [protected]
 

String length of the operation name.

const char* TAO::Invocation_Adapter::operation_ [protected]
 

Name of the operation.

CORBA::Object_ptr TAO::Invocation_Adapter::target_ [protected]
 

The target object on which this invocation is carried out.

Invocation_Type TAO::Invocation_Adapter::type_ [protected]
 

The invocation type and mode.


The documentation for this class was generated from the following files:
Generated on Wed Jan 14 23:40:37 2004 for TAO by doxygen1.2.18