#include <DII_Invocation_Adapter.h>
Inheritance diagram for TAO::DII_Invocation_Adapter:
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_Adapter & | operator= (const DII_Invocation_Adapter &) |
Private Attributes | |
CORBA::ExceptionList * | exception_list_ |
CORBA::Request * | request_ |
Definition at line 55 of file DII_Invocation_Adapter.h.
|
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 } |
|
Definition at line 98 of file DII_Invocation_Adapter.h.
00098 {} |
|
Dont allow default initializations.
|
|
|
|
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 } |
|
|
|
Definition at line 111 of file DII_Invocation_Adapter.h. |
|
Definition at line 113 of file DII_Invocation_Adapter.h. Referenced by invoke_twoway(). |