#include <Direct_Collocation_Upcall_Wrapper.h>
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. |
Definition at line 54 of file Direct_Collocation_Upcall_Wrapper.h.
|
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 } |