Generic interface for the invocation object visible to the IDL compiler. More...
#include <Invocation_Adapter.h>
Public Member Functions | |
Invocation_Adapter (CORBA::Object_ptr target, Argument **args, int arg_number, const char *operation, size_t op_len, Collocation_Proxy_Broker *cpb, TAO::Invocation_Type type=TAO_TWOWAY_INVOCATION, TAO::Invocation_Mode mode=TAO_SYNCHRONOUS_INVOCATION) | |
virtual | ~Invocation_Adapter (void) |
virtual void | invoke (TAO::Exception_Data *ex, unsigned long ex_count) |
Invoke the target, and used by the generated code. | |
Protected Member Functions | |
virtual void | invoke_i (TAO_Stub *stub, TAO_Operation_Details &details) |
bool | get_timeout (TAO_Stub *stub, ACE_Time_Value &val) |
TAO_Stub * | get_stub (void) const |
Helper method that extracts TAO_Stub from the target object. | |
void | object_forwarded (CORBA::Object_var &effective_target, TAO_Stub *stub, CORBA::Boolean permanent_forward) |
void | set_response_flags (TAO_Stub *stub, TAO_Operation_Details &details) |
Helper method to set the response flags within details. | |
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 behavior at their level. | |
virtual Invocation_Status | invoke_remote_i (TAO_Stub *stub, TAO_Operation_Details &details, CORBA::Object_var &effective_target, ACE_Time_Value *&max_wait_time) |
virtual Invocation_Status | invoke_collocated_i (TAO_Stub *stub, TAO_Operation_Details &details, CORBA::Object_var &effective_target, Collocation_Strategy strat) |
Make a collocated call. | |
virtual Invocation_Status | invoke_twoway (TAO_Operation_Details &details, CORBA::Object_var &effective_target, Profile_Transport_Resolver &r, ACE_Time_Value *&max_wait_time) |
Helper method to make a two way invocation. | |
virtual Invocation_Status | invoke_oneway (TAO_Operation_Details &details, CORBA::Object_var &effective_target, Profile_Transport_Resolver &r, ACE_Time_Value *&max_wait_time) |
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 **const | args_ |
Array of arguments for this operation. | |
int const | number_args_ |
Number of arguments for this operation. | |
char const * | operation_ |
Name of the operation. | |
size_t const | op_len_ |
String length of the operation name. | |
Collocation_Proxy_Broker *const | cpb_ |
Collocation proxy broker for this operation. | |
Invocation_Type const | type_ |
The invocation type. | |
Invocation_Mode const | mode_ |
The invocation mode. | |
Private Member Functions | |
Invocation_Adapter (void) | |
Don't allow default initializations. | |
Invocation_Adapter (Invocation_Adapter const &) | |
Invocation_Adapter & | operator= (const Invocation_Adapter &) |
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 behavioral information before kicking off an invocation.
@ More info.. Wafer thin inclusions All stuff created on stack Only handles starts and restarts
TAO::Invocation_Adapter::Invocation_Adapter | ( | CORBA::Object_ptr | target, |
Argument ** | args, | ||
int | arg_number, | ||
const char * | operation, | ||
size_t | op_len, | ||
Collocation_Proxy_Broker * | cpb, | ||
TAO::Invocation_Type | type = TAO_TWOWAY_INVOCATION , |
||
TAO::Invocation_Mode | mode = TAO_SYNCHRONOUS_INVOCATION |
||
) |
The only constructor used by the IDL compiler, and only way to create this adapter.
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. |
op_len | Number of characters 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 | ) | [virtual] |
TAO::Invocation_Adapter::Invocation_Adapter | ( | void | ) | [private] |
Don't allow default initializations.
TAO::Invocation_Adapter::Invocation_Adapter | ( | Invocation_Adapter const & | ) | [private] |
TAO_Stub * TAO::Invocation_Adapter::get_stub | ( | void | ) | 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 | ||
) | [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.
ex | Array of exception data declared by the application in their IDL. |
ex_count | Number of elements in the array. |
Invocation_Status TAO::Invocation_Adapter::invoke_collocated_i | ( | TAO_Stub * | stub, |
TAO_Operation_Details & | details, | ||
CORBA::Object_var & | effective_target, | ||
Collocation_Strategy | strat | ||
) | [protected, virtual] |
Make a collocated call.
This method creates an object that takes care of making collocated invocations and calls invoke () on it. If the invoke () returns with a location forwarded reply we return a restart
stub | The stub object on which the invocation is made. |
details | The operations details of the operation that is being invoked. |
void TAO::Invocation_Adapter::invoke_i | ( | TAO_Stub * | stub, |
TAO_Operation_Details & | details | ||
) | [protected, virtual] |
The stub pointer passed to this call has all the details about the object to which the invocation needs to be routed to. The implementation of this method looks if we are collocated or not and 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.
Invocation_Status TAO::Invocation_Adapter::invoke_oneway | ( | TAO_Operation_Details & | details, |
CORBA::Object_var & | effective_target, | ||
Profile_Transport_Resolver & | r, | ||
ACE_Time_Value *& | max_wait_time | ||
) | [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.
Invocation_Status TAO::Invocation_Adapter::invoke_remote_i | ( | TAO_Stub * | stub, |
TAO_Operation_Details & | details, | ||
CORBA::Object_var & | effective_target, | ||
ACE_Time_Value *& | max_wait_time | ||
) | [protected, virtual] |
Helper method that prepares the necessary stuff for a remote invocation.
Invocation_Status TAO::Invocation_Adapter::invoke_twoway | ( | TAO_Operation_Details & | details, |
CORBA::Object_var & | effective_target, | ||
Profile_Transport_Resolver & | r, | ||
ACE_Time_Value *& | max_wait_time | ||
) | [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_var & | effective_target, |
TAO_Stub * | stub, | ||
CORBA::Boolean | permanent_forward | ||
) | [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] |
void TAO::Invocation_Adapter::set_response_flags | ( | TAO_Stub * | stub, |
TAO_Operation_Details & | details | ||
) | [protected] |
Helper method to set the response flags within details.
Argument** const TAO::Invocation_Adapter::args_ [protected] |
Array of arguments for this operation.
Collocation_Proxy_Broker* const TAO::Invocation_Adapter::cpb_ [protected] |
Collocation proxy broker for this operation.
Invocation_Mode const TAO::Invocation_Adapter::mode_ [protected] |
The invocation mode.
int const TAO::Invocation_Adapter::number_args_ [protected] |
Number of arguments for this operation.
This includes the return values too
size_t const TAO::Invocation_Adapter::op_len_ [protected] |
String length of the operation name.
char const* 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 const TAO::Invocation_Adapter::type_ [protected] |
The invocation type.