#include <DII_Invocation.h>
Public Member Functions | |
DII_Invocation (CORBA::Object_ptr otarget, Profile_Transport_Resolver &resolver, TAO_Operation_Details &detail, CORBA::ExceptionList *excp, CORBA::Request_ptr req, bool response_expected=true) | |
virtual Dynamic::ParameterList * | arguments (void) |
Invocation_Status | remote_invocation (ACE_Time_Value *max_wait_time) |
virtual Invocation_Status | handle_user_exception (TAO_InputCDR &cdr) |
Private Attributes | |
CORBA::ExceptionList * | excp_list_ |
CORBA::Request_ptr | host_ |
Back pointer to the DII request that created us. | |
Friends | |
class | DII_Invocation_Adapter |
Definition at line 43 of file DII_Invocation.h.
TAO::DII_Invocation::DII_Invocation | ( | CORBA::Object_ptr | otarget, | |
Profile_Transport_Resolver & | resolver, | |||
TAO_Operation_Details & | detail, | |||
CORBA::ExceptionList * | excp, | |||
CORBA::Request_ptr | req, | |||
bool | response_expected = true | |||
) |
Definition at line 26 of file DII_Invocation.cpp.
: DII_Invocation.cpp 84443 2009-02-12 20:26:35Z johnnyw $") TAO_BEGIN_VERSIONED_NAMESPACE_DECL namespace TAO { DII_Invocation::DII_Invocation (CORBA::Object_ptr otarget, Profile_Transport_Resolver &resolver, TAO_Operation_Details &detail, CORBA::ExceptionList *excp, CORBA::Request_ptr req,
Dynamic::ParameterList * TAO::DII_Invocation::arguments | ( | void | ) | [virtual] |
Definition at line 43 of file DII_Invocation.cpp.
{ } #if TAO_HAS_INTERCEPTORS == 1 Dynamic::ParameterList * DII_Invocation::arguments (void) { Dynamic::ParameterList_var safe_parameter_list; TAO::Argument ** const args = this->details_.args (); if (this->details_.args_num () > 1) { // Take the second argument since the first is a return value. TAO::NVList_Argument * const tmp_arg = dynamic_cast <TAO::NVList_Argument*> (args[1]); if (tmp_arg) { // Generate the argument list on demand. Dynamic::ParameterList * const parameter_list = TAO_RequestInfo_Util::make_parameter_list ();
Invocation_Status TAO::DII_Invocation::handle_user_exception | ( | TAO_InputCDR & | cdr | ) | [virtual] |
This method is selectively made virtual, so that inherited classes can overload the user exception handling type. For example the DII needs a totally different method of user exception exception handling
Reimplemented from TAO::Synch_Twoway_Invocation.
Definition at line 78 of file DII_Invocation.cpp.
{ return Synch_Twoway_Invocation::remote_twoway (max_wait_time); } Invocation_Status DII_Invocation::handle_user_exception (TAO_InputCDR &cdr) { Reply_Guard mon (this, TAO_INVOKE_FAILURE); if (TAO_debug_level > 3) { ACE_DEBUG ((LM_DEBUG, "TAO (%P|%t) - DII_Invocation::" "handle_user_exception\n")); } // Match the exception interface repository id with the // exception in the exception list. // This is important to decode the exception. CORBA::String_var buf; TAO_InputCDR tmp_stream (cdr, cdr.start ()->length (), 0); // Pull the exception ID out of the marshaling buffer. if (tmp_stream.read_string (buf.inout ()) == 0) { throw ::CORBA::MARSHAL (TAO::VMCID, CORBA::COMPLETED_YES); } for (CORBA::ULong i = 0; this->excp_list_ != 0 && i < this->excp_list_->count (); i++) { CORBA::TypeCode_var tc = this->excp_list_->item (i); const char *xid = tc->id (); if (ACE_OS::strcmp (buf.in (), xid) != 0) { continue; } CORBA::Any any; TAO::Unknown_IDL_Type *unk = 0; ACE_NEW_RETURN (unk, TAO::Unknown_IDL_Type ( tc.in (), cdr ), TAO_INVOKE_FAILURE); any.replace (unk); mon.set_status (TAO_INVOKE_USER_EXCEPTION); throw ::CORBA::UnknownUserException (any); } // If we couldn't find the right exception, report it as // CORBA::UNKNOWN. // But first, save the user exception in case we // are being used in a TAO gateway. this->host_->raw_user_exception (cdr);
Invocation_Status TAO::DII_Invocation::remote_invocation | ( | ACE_Time_Value * | max_wait_time | ) |
Definition at line 72 of file DII_Invocation.cpp.
friend class DII_Invocation_Adapter [friend] |
Definition at line 47 of file DII_Invocation.h.
CORBA::ExceptionList* TAO::DII_Invocation::excp_list_ [private] |
Definition at line 65 of file DII_Invocation.h.
CORBA::Request_ptr TAO::DII_Invocation::host_ [private] |
Back pointer to the DII request that created us.
Definition at line 68 of file DII_Invocation.h.