#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.
1.7.0