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 m=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)

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 55 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  m = 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.
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.
type The operation type which could be a oneway or two way operation. this information is availbe in the IDL file.
mode Invocation mode. This information is also available in the IDL file and in the generated code.

Definition at line 25 of file DII_Invocation_Adapter.cpp.

References TAO::TAO_TWOWAY_INVOCATION.

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

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

Definition at line 98 of file DII_Invocation_Adapter.h.

00098 {}

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

Definition at line 48 of file DII_Invocation_Adapter.cpp.

References CORBA::Request::_tao_byte_order(), ACE_CHECK_RETURN, ACE_ENV_ARG_PARAMETER, ACE_THROW_RETURN, 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_FAILURE, TAO::TAO_INVOKE_RESTART, TAO_PLUGGABLE_MESSAGE_LOCATION_FORWARD_PERM, TAO::TAO_TWOWAY_INVOCATION, and TAO::Profile_Transport_Resolver::transport().

00054   {
00055     // Simple sanity check
00056     if (this->mode_ != TAO_DII_INVOCATION ||
00057         this->type_ != TAO_TWOWAY_INVOCATION)
00058       {
00059         ACE_THROW_RETURN (CORBA::INTERNAL (
00060             CORBA::SystemException::_tao_minor_code (
00061                 TAO::VMCID,
00062                 EINVAL),
00063             CORBA::COMPLETED_NO),
00064                           TAO_INVOKE_FAILURE);
00065       }
00066 
00067     r.transport ()->messaging_object ()->out_stream ().reset_byte_order (request_->_tao_byte_order ());
00068 
00069     TAO::DII_Invocation synch (this->target_,
00070                                r,
00071                                op,
00072                                this->exception_list_,
00073                                this->request_);
00074 
00075 
00076     Invocation_Status status =
00077       synch.remote_invocation (max_wait_time
00078                                ACE_ENV_ARG_PARAMETER);
00079     ACE_CHECK_RETURN (TAO_INVOKE_FAILURE);
00080 
00081 
00082     if (status == TAO_INVOKE_RESTART &&
00083         synch.is_forwarded ())
00084       {
00085         effective_target =
00086           synch.steal_forwarded_reference ();
00087 
00088 #if TAO_HAS_INTERCEPTORS == 1
00089         const CORBA::Boolean permanent_forward =
00090             (synch.reply_status() == TAO_PLUGGABLE_MESSAGE_LOCATION_FORWARD_PERM);
00091 #else
00092         const CORBA::Boolean permanent_forward = false;
00093 #endif
00094         this->object_forwarded (effective_target,
00095                                 r.stub (),
00096                                 permanent_forward
00097                                 ACE_ENV_ARG_PARAMETER);
00098         ACE_CHECK_RETURN (TAO_INVOKE_FAILURE);
00099       }
00100     return status;
00101   }

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 111 of file DII_Invocation_Adapter.h.

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

Definition at line 113 of file DII_Invocation_Adapter.h.

Referenced by invoke_twoway().


The documentation for this class was generated from the following files:
Generated on Thu Nov 9 13:05:15 2006 for TAO_DynamicInterface by doxygen 1.3.6