TAO::DII_Invocation_Adapter Class Reference

Generic interface for the DII invocation object visible. More...

#include <DII_Invocation_Adapter.h>

Inheritance diagram for TAO::DII_Invocation_Adapter:

Inheritance graph
[legend]
Collaboration diagram for TAO::DII_Invocation_Adapter:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 DII_Invocation_Adapter (CORBA::Object *target, Argument **args, int arg_number, const char *operation, size_t op_len, CORBA::ExceptionList *exception, CORBA::Request *r, Invocation_Mode mode=TAO_DII_INVOCATION)
virtual ~DII_Invocation_Adapter (void)

Protected Member Functions

virtual Invocation_Status invoke_twoway (TAO_Operation_Details &op, CORBA::Object_var &effective_target, Profile_Transport_Resolver &r, 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)

Private Member Functions

 DII_Invocation_Adapter (void)
 Dont allow default initializations.

 DII_Invocation_Adapter (const DII_Invocation_Adapter &)
DII_Invocation_Adapteroperator= (const DII_Invocation_Adapter &)

Private Attributes

CORBA::ExceptionListexception_list_
CORBA::Requestrequest_

Detailed Description

Generic interface for the DII invocation object visible.

Definition at line 58 of file DII_Invocation_Adapter.h.


Constructor & Destructor Documentation

TAO::DII_Invocation_Adapter::DII_Invocation_Adapter CORBA::Object target,
Argument **  args,
int  arg_number,
const char *  operation,
size_t  op_len,
CORBA::ExceptionList exception,
CORBA::Request r,
Invocation_Mode  mode = TAO_DII_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.
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.
mode Invocation mode. This information is also available in the IDL file and in the generated code.

Definition at line 28 of file DII_Invocation_Adapter.cpp.

References TAO::TAO_TWOWAY_INVOCATION.

00037     : Invocation_Adapter (target,
00038                           args,
00039                           arg_number,
00040                           operation,
00041                           op_len,
00042                           0, // Collocation Proxy broker pointer
00043                           TAO_TWOWAY_INVOCATION,
00044                           mode)
00045       , exception_list_ (excp)
00046       , request_ (r)
00047   {
00048   }

TAO::DII_Invocation_Adapter::~DII_Invocation_Adapter void   )  [virtual]
 

Definition at line 50 of file DII_Invocation_Adapter.cpp.

00051   {
00052   }

TAO::DII_Invocation_Adapter::DII_Invocation_Adapter void   )  [private]
 

Dont allow default initializations.

TAO::DII_Invocation_Adapter::DII_Invocation_Adapter const DII_Invocation_Adapter  )  [private]
 


Member Function Documentation

Invocation_Status TAO::DII_Invocation_Adapter::invoke_collocated_i TAO_Stub stub,
TAO_Operation_Details details,
CORBA::Object_var effective_target,
Collocation_Strategy  strat
[protected, virtual]
 

Reimplemented from TAO::Invocation_Adapter.

Definition at line 55 of file DII_Invocation_Adapter.cpp.

References TAO_Operation_Details::cac(), and ACE_Dynamic_Service< TYPE >::instance().

00060   {
00061     TAO_DII_Arguments_Converter_Impl* dii_arguments_converter
00062       = ACE_Dynamic_Service<TAO_DII_Arguments_Converter_Impl>::instance (
00063         "DII_Arguments_Converter");
00064     details.cac (dii_arguments_converter);
00065 
00066     return Invocation_Adapter::invoke_collocated_i (stub,
00067                                                     details,
00068                                                     effective_target,
00069                                                     strat);
00070   }

Invocation_Status TAO::DII_Invocation_Adapter::invoke_twoway TAO_Operation_Details op,
CORBA::Object_var effective_target,
Profile_Transport_Resolver r,
ACE_Time_Value *&  max_wait_time
[protected, virtual]
 

Reimplemented from TAO::Invocation_Adapter.

Reimplemented in TAO::DII_Asynch_Invocation_Adapter.

Definition at line 73 of file DII_Invocation_Adapter.cpp.

References CORBA::Request::_tao_byte_order(), TAO::Invocation_Status, TAO::Invocation_Base::is_forwarded(), TAO_Transport::messaging_object(), TAO::Invocation_Adapter::object_forwarded(), TAO_Pluggable_Messaging::out_stream(), TAO::DII_Invocation::remote_invocation(), TAO::Invocation_Base::reply_status(), request_, ACE_OutputCDR::reset_byte_order(), TAO::Invocation_Base::steal_forwarded_reference(), TAO::Profile_Transport_Resolver::stub(), TAO::TAO_DII_INVOCATION, TAO::TAO_INVOKE_RESTART, TAO_PLUGGABLE_MESSAGE_LOCATION_FORWARD_PERM, TAO::TAO_TWOWAY_INVOCATION, and TAO::Profile_Transport_Resolver::transport().

00078   {
00079     // Simple sanity check
00080     if (this->mode_ != TAO_DII_INVOCATION ||
00081         this->type_ != TAO_TWOWAY_INVOCATION)
00082       {
00083         throw ::CORBA::INTERNAL (
00084           CORBA::SystemException::_tao_minor_code (
00085             TAO::VMCID,
00086             EINVAL),
00087           CORBA::COMPLETED_NO);
00088       }
00089 
00090     r.transport ()->messaging_object ()->out_stream ().reset_byte_order (
00091         request_->_tao_byte_order ());
00092 
00093     TAO::DII_Invocation synch (this->target_,
00094                                r,
00095                                op,
00096                                this->exception_list_,
00097                                this->request_);
00098 
00099 
00100     Invocation_Status status = synch.remote_invocation (max_wait_time);
00101 
00102     if (status == TAO_INVOKE_RESTART && synch.is_forwarded ())
00103       {
00104         effective_target = synch.steal_forwarded_reference ();
00105 
00106 #if TAO_HAS_INTERCEPTORS == 1
00107         CORBA::Boolean const permanent_forward =
00108             (synch.reply_status() == TAO_PLUGGABLE_MESSAGE_LOCATION_FORWARD_PERM);
00109 #else
00110         CORBA::Boolean const permanent_forward = false;
00111 #endif
00112         this->object_forwarded (effective_target,
00113                                 r.stub (),
00114                                 permanent_forward);
00115       }
00116     return status;
00117   }

DII_Invocation_Adapter& TAO::DII_Invocation_Adapter::operator= const DII_Invocation_Adapter  )  [private]
 


Member Data Documentation

CORBA::ExceptionList* TAO::DII_Invocation_Adapter::exception_list_ [private]
 

Definition at line 112 of file DII_Invocation_Adapter.h.

CORBA::Request* TAO::DII_Invocation_Adapter::request_ [private]
 

Definition at line 114 of file DII_Invocation_Adapter.h.

Referenced by invoke_twoway().


The documentation for this class was generated from the following files:
Generated on Sun Jan 27 13:37:52 2008 for TAO_DynamicInterface by doxygen 1.3.6