TAO::Direct_Collocation_Upcall_Wrapper Class Reference

Wraps the activities direct collocation upcall. More...

#include <Direct_Collocation_Upcall_Wrapper.h>

List of all members.

Public Member Functions

void upcall (CORBA::Object_ptr obj, CORBA::Object_out forward_obj, TAO::Argument **args, int num_args, const char *op, size_t op_len, TAO::Collocation_Strategy strategy) throw (CORBA::Exception)
 Perform the upcall.


Detailed Description

Wraps the activities direct collocation upcall.

Definition at line 54 of file Direct_Collocation_Upcall_Wrapper.h.


Member Function Documentation

TAO_BEGIN_VERSIONED_NAMESPACE_DECL void TAO::Direct_Collocation_Upcall_Wrapper::upcall CORBA::Object_ptr  obj,
CORBA::Object_out  forward_obj,
TAO::Argument **  args,
int  num_args,
const char *  op,
size_t  op_len,
TAO::Collocation_Strategy  strategy
throw (CORBA::Exception)
 

Perform the upcall.

Definition at line 22 of file Direct_Collocation_Upcall_Wrapper.cpp.

References CORBA::Object::_duplicate(), TAO_Abstract_ServantBase::_find(), ACE_CATCH, ACE_CATCHANY, ACE_CHECK, ACE_ENDTRY, ACE_ENV_ARG_PARAMETER, ACE_RE_THROW, ACE_THROW, ACE_TRY, ACE_TRY_CHECK, and TAO_Collocated_Skeleton.

Referenced by POA_CORBA::_TAO_Policy_Strategized_Proxy_Broker::dispatch().

00033 {
00034   TAO_Abstract_ServantBase * const servant = obj->_servant ();
00035 
00036   TAO_Collocated_Skeleton collocated_skel;
00037   int const status = servant->_find (op,
00038                                      collocated_skel,
00039                                      strategy,
00040                                      op_len);
00041 
00042   if (status == -1)
00043     {
00044       ACE_THROW (CORBA::BAD_OPERATION (CORBA::OMGVMCID | 2, CORBA::COMPLETED_NO));
00045     }
00046 
00047   ACE_TRY
00048     {
00049       collocated_skel (servant,
00050                        args,
00051                        num_args
00052                        ACE_ENV_ARG_PARAMETER);
00053       ACE_TRY_CHECK;
00054     }
00055 #if (TAO_HAS_MINIMUM_CORBA == 0) && !defined (CORBA_E_COMPACT) && !defined (CORBA_E_MICRO)
00056   ACE_CATCH (PortableServer::ForwardRequest, forward_request)
00057     {
00058       forward_obj =
00059         CORBA::Object::_duplicate (forward_request.forward_reference.in ());
00060       return;
00061     }
00062 #else
00063   ACE_CATCHANY
00064     {
00065       ACE_UNUSED_ARG (forward_obj);
00066       ACE_RE_THROW;
00067     }
00068 #endif /* TAO_HAS_MINIMUM_CORBA && !CORBA_E_COMPACT && !CORBA_E_MICRO*/
00069   ACE_ENDTRY;
00070   ACE_CHECK;
00071 }


The documentation for this class was generated from the following files:
Generated on Thu Nov 9 12:47:06 2006 for TAO_PortableServer by doxygen 1.3.6