TAO  2.3.3
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
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]

Public Member Functions

 Invocation_Adapter (CORBA::Object_ptr target, Argument **args, int arg_number, const char *operation, size_t op_len, int collocation_opportunity, TAO::Invocation_Type type=TAO_TWOWAY_INVOCATION, TAO::Invocation_Mode mode=TAO_SYNCHRONOUS_INVOCATION, bool has_in_args=true)
 
virtual ~Invocation_Adapter (void)
 
virtual void invoke (TAO::Exception_Data *ex, unsigned long ex_count)
 Invoke the target, and used by the generated code. More...
 
void _tao_byte_order (int byte_order)
 
int _tao_byte_order ()
 

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_Stubget_stub (void) const
 Helper method that extracts TAO_Stub from the target object. More...
 
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. More...
 
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, Invocation_Retry_State *retry_state=0)
 
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. More...
 
virtual Invocation_Status invoke_twoway (TAO_Operation_Details &details, CORBA::Object_var &effective_target, Profile_Transport_Resolver &r, ACE_Time_Value *&max_wait_time, Invocation_Retry_State *retry_state=0)
 Helper method to make a two way invocation. More...
 
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. More...
 

Protected Attributes

CORBA::Object_ptr target_
 The target object on which this invocation is carried out. More...
 
Argument **const args_
 Array of arguments for this operation. More...
 
int const number_args_
 Number of arguments for this operation. More...
 
bool has_in_args_
 
char const * operation_
 Name of the operation. More...
 
size_t const op_len_
 String length of the operation name. More...
 
int const collocation_opportunity_
 Collocation opportunity for this operation. More...
 
Invocation_Type const type_
 The invocation type. More...
 
Invocation_Mode const mode_
 The invocation mode. More...
 
int byte_order_
 Intended byte order for message output stream. More...
 

Private Member Functions

 Invocation_Adapter (void)
 Don't allow default initializations. More...
 
 Invocation_Adapter (Invocation_Adapter const &)
 
Invocation_Adapteroperator= (const Invocation_Adapter &)
 
TAO::Collocation_Strategy collocation_strategy (CORBA::Object_ptr object)
 

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 behavioral 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,
size_t  op_len,
int  collocation_opportunity,
TAO::Invocation_Type  type = TAO_TWOWAY_INVOCATION,
TAO::Invocation_Mode  mode = TAO_SYNCHRONOUS_INVOCATION,
bool  has_in_args = true 
)

The only constructor used by the IDL compiler, and only way to create this adapter.

Parameters
targetPoints to the object on which this invocation is being invoked.
argsArray of pointers to the argument list in the operation declaration. This includes the return, inout and out arguments.
arg_numberNumber of arguments in the above array. This is the number of elements in the above array.
operationThe name of the operation being invoked.
op_lenNumber of characters in the operation name. This is an optimization which helps us to avoid calling strlen () while creating a message format.
collocation_opportunityIndicate which collocation optimizations should be possible
typeThe operation type which could be a oneway or two way operation. This information is available in the IDL file.
modeInvocation 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

Member Function Documentation

void TAO::Invocation_Adapter::_tao_byte_order ( int  byte_order)
Parameters
byte_orderThe intended byte order for the message output stream. For use in message gateways that forward messages from sources with different byte order than the native order.
int TAO::Invocation_Adapter::_tao_byte_order ( )

Get the intended byte order for the message output stream. In case of gateway messages this could divert from the native byte order.

TAO::Collocation_Strategy TAO::Invocation_Adapter::collocation_strategy ( CORBA::Object_ptr  object)
private

This method returns the right collocation strategy, if any, to be used to perform a method invocation on the given object.

Note
No-Collocation is a special case of collocation.
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.

Parameters
exArray of exception data declared by the application in their IDL.
ex_countNumber 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 
)
protectedvirtual

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

Parameters
stubThe stub object on which the invocation is made.
detailsThe operations details of the operation that is being invoked.
void TAO::Invocation_Adapter::invoke_i ( TAO_Stub stub,
TAO_Operation_Details details 
)
protectedvirtual

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 
)
protectedvirtual

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,
Invocation_Retry_State retry_state = 0 
)
protectedvirtual

Helper method that prepares the necessary stuff for a remote invocation. This method does the following essential activities needed for a remote invocation.

  • Extracts the roundtrip timeout policies set in the ORB or Object or at the thread level
  • Uses the target information to pick a profile and a transport object on which the invocation needs to be sent
  • Checks whether the operation is a oneway or twoway and delegates the call.
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,
Invocation_Retry_State retry_state = 0 
)
protectedvirtual

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.

Member Data Documentation

Argument** const TAO::Invocation_Adapter::args_
protected

Array of arguments for this operation.

int TAO::Invocation_Adapter::byte_order_
protected

Intended byte order for message output stream.

int const TAO::Invocation_Adapter::collocation_opportunity_
protected

Collocation opportunity for this operation.

bool TAO::Invocation_Adapter::has_in_args_
protected
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.


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