diff options
author | irfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2002-05-02 04:58:03 +0000 |
---|---|---|
committer | irfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2002-05-02 04:58:03 +0000 |
commit | c054103473e47b3e5ec6379e3b3b09bc879253ac (patch) | |
tree | 81b850ad0da28703d9348ff162a9f9f8b636c5e7 /TAO | |
parent | ef67edf84c2cdf30a1345adca0dcede8db8330d6 (diff) | |
download | ATCD-c054103473e47b3e5ec6379e3b3b09bc879253ac.tar.gz |
ChangeLogTag: Wed May 01 22:54:13 2002 Irfan Pyarali <irfan@cs.wustl.edu>
Diffstat (limited to 'TAO')
-rw-r--r-- | TAO/ChangeLogs/ChangeLog-02a | 94 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_operation/thru_poa_proxy_impl_ss.cpp | 24 | ||||
-rw-r--r-- | TAO/tao/Domain/DomainS.cpp | 278 | ||||
-rw-r--r-- | TAO/tao/PortableServer/Collocated_Object.cpp | 8 | ||||
-rw-r--r-- | TAO/tao/PortableServer/Default_Servant_Dispatcher.cpp | 36 | ||||
-rw-r--r-- | TAO/tao/PortableServer/Default_Servant_Dispatcher.h | 39 | ||||
-rw-r--r-- | TAO/tao/PortableServer/ImplRepoS.cpp | 1072 | ||||
-rw-r--r-- | TAO/tao/PortableServer/Object_Adapter.cpp | 50 | ||||
-rw-r--r-- | TAO/tao/PortableServer/Object_Adapter.h | 39 | ||||
-rw-r--r-- | TAO/tao/PortableServer/PolicyS.cpp | 250 | ||||
-rw-r--r-- | TAO/tao/PortableServer/Servant_Dispatcher.h | 22 | ||||
-rw-r--r-- | TAO/tao/PortableServer/ThruPOA_Object_Proxy_Impl.cpp | 19 | ||||
-rw-r--r-- | TAO/tao/RTPortableServer/RT_Collocation_Resolver.cpp | 5 | ||||
-rw-r--r-- | TAO/tao/RTPortableServer/RT_Servant_Dispatcher.cpp | 196 | ||||
-rw-r--r-- | TAO/tao/RTPortableServer/RT_Servant_Dispatcher.h | 115 | ||||
-rw-r--r-- | TAO/tests/RTCORBA/Collocation/Collocation.cpp | 471 | ||||
-rw-r--r-- | TAO/tests/RTCORBA/Collocation/README | 63 |
17 files changed, 1658 insertions, 1123 deletions
diff --git a/TAO/ChangeLogs/ChangeLog-02a b/TAO/ChangeLogs/ChangeLog-02a index ec4f5b51de0..d2e3d62c7cb 100644 --- a/TAO/ChangeLogs/ChangeLog-02a +++ b/TAO/ChangeLogs/ChangeLog-02a @@ -1,3 +1,97 @@ +Wed May 01 22:54:13 2002 Irfan Pyarali <irfan@cs.wustl.edu> + + * tao/PortableServer/Servant_Dispatcher: + * tao/RTPortableServer/RT_Servant_Dispatcher: + * tao/PortableServer/Default_Servant_Dispatcher: + + The way these classes were being used was that in + TAO_Object_Adapter::dispatch_servant, the dispatcher would take + over, call pre_invoke using the request to change the priority + of the upcall thread, make the upcall, and then call post_invoke + to reset the priority of the upcall thread. This worked fine + for remote requests since all the request parameters are + represented by the TAO_ServerRequest object. + + However, this scheme would not work for collocated cases as the + request parameters are not represented in a single object. + + Therefore, the dispatch() call on the dispatchers was replaced + by pre_invoke_remote_request(), pre_invoke_collocated_request(), + and post_invoke(). pre_invoke_remote_request() and + pre_invoke_collocated_request() are different since in the + remote case we need to do more, i.e., extract the + client-propagated priority from the ServiceContextList of the + request. In the collocated case, the priority of the client is + the priority of the request thread. + + Default_Servant_Dispatcher still is a no-op. The state for + resetting the priority of the thread had to be moved from + RT_Priority_Model_Processing to the Servant_Upcall. Therefore, + the RT_Priority_Model_Processing was no longer needed and was + removed. + + pre_invoke_collocated_request() check for a thread pool without + lanes and the SERVER_DECLARED policy. If this combination + exists, it may need to change the priority of the upcall thread + if the target server declared priority is different. + + * tao/RTPortableServer/RT_Collocation_Resolver.cpp + (is_collocated): If the target POA does not have a dedicated + thread pool, then all calls to it are collocated. + + * tao/PortableServer/Object_Adapter.cpp (dispatch_servant): + Pre_Invoke_State was removed from RT_Priority_Model_Processing + and added to the Servant_Upcall. + + * tests/RTCORBA/Collocation: Extended this test to do more + extensive and precise testing and cover all collocation uses + cases. The new test now has the following structure: + + - One servant is in the Root POA which is service by the default + thread pool. + + - One servant is in a POA with the CLIENT_PROPAGATED policy and + is serviced by a thread pool without lanes. + + - Two servants are in a POA with the SERVER_DECLARED policy and + is serviced by a thread pool without lanes. One of the servant + is at default priority and the other is at default + 1 priority. + + - One servant is in a POA without a priority model policy and is + serviced by a thread pool without lanes. + + - One servants is in a POA with the CLIENT_PROPAGATED policy and + is serviced by a thread pool with lanes. Depending on the + priority of the caller, either one of the lanes processes the + request. + + - Two servants are in a POA with the SERVER_DECLARED policy and + is serviced by a thread pool with lanes. One of the servant is + at default priority and the other is at default + 1 priority. + + The main thread still uses both the default priority and the + default + 1 priority. The test checks that the correct pool, + lane, and priority is being used to run the upcall. For + servants in POAs without RT thread pools, made sure that all + upcalls on these servants are collocated. Also, added additional + assertion checks and abstracted out common code. + + * TAO_IDL/be/be_visitor_operation/thru_poa_proxy_impl_ss.cpp + (visit_operation): Added a call to + servant_upcall.pre_invoke_collocated_request() to + ThruPOA_Proxy_Impl collocated methods. + + * tao/PortableServer/ThruPOA_Object_Proxy_Impl.cpp: + * tao/PortableServer/Collocated_Object.cpp: + Added a call to servant_upcall.pre_invoke_collocated_request() + to _non_existent() and _is_a(). + + * tao/PortableServer/ImplRepoS.cpp: + * tao/Domain/DomainS.cpp: + * tao/PortableServer/PolicyS.cpp: + Added calls to servant_upcall.pre_invoke_collocated_request() + for hand generated collocated upcall code. + Wed May 1 23:42:14 2002 Balachandran Natarajan <bala@cs.wustl.edu> * orbsvcs/ImplRepo_Service/ImplRepo_i.cpp: #included diff --git a/TAO/TAO_IDL/be/be_visitor_operation/thru_poa_proxy_impl_ss.cpp b/TAO/TAO_IDL/be/be_visitor_operation/thru_poa_proxy_impl_ss.cpp index 84fdaac5823..fe21b95ff28 100644 --- a/TAO/TAO_IDL/be/be_visitor_operation/thru_poa_proxy_impl_ss.cpp +++ b/TAO/TAO_IDL/be/be_visitor_operation/thru_poa_proxy_impl_ss.cpp @@ -150,7 +150,7 @@ be_visitor_operation_thru_poa_proxy_impl_ss::visit_operation (be_operation *node if (!be_global->exception_support ()) *os << be_nl << "ACE_ENV_ARG_PARAMETER" << be_uidt_nl - << ");" << be_nl << be_uidt; + << ");" << be_uidt_nl; else *os << be_uidt_nl << ");" << be_uidt_nl; @@ -165,7 +165,27 @@ be_visitor_operation_thru_poa_proxy_impl_ss::visit_operation (be_operation *node -1); } - os->indent (); + if (!be_global->exception_support ()) + os->indent (); + + *os << "servant_upcall.pre_invoke_collocated_request ("; + if (!be_global->exception_support ()) + *os << "ACE_ENV_SINGLE_ARG_PARAMETER"; + *os << ");" << be_nl; + + // check if there is an exception + if (!be_global->exception_support ()) + if (this->gen_check_exception (bt) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_operation_thru_poa_collocated_ss::" + "visit_operation - " + "codegen for checking exception failed\n"), + -1); + } + + if (!be_global->exception_support ()) + os->indent (); if (!this->void_return_type (bt)) { diff --git a/TAO/tao/Domain/DomainS.cpp b/TAO/tao/Domain/DomainS.cpp index 85a2fdd2edc..a40cdb63374 100644 --- a/TAO/tao/Domain/DomainS.cpp +++ b/TAO/tao/Domain/DomainS.cpp @@ -135,7 +135,7 @@ TAO_CORBA_DomainManager_Perfect_Hash_OpTable::lookup (const char *str, unsigned {"",0},{"",0}, {"_non_existent", &POA_CORBA::DomainManager::_non_existent_skel}, {"",0},{"",0},{"",0}, - {"get_domain_policy", &POA_CORBA::DomainManager::get_domain_policy_skel}, + {"get_domain_policy", &POA_CORBA::DomainManager::get_domain_policy_skel}, }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) @@ -170,21 +170,21 @@ public: ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual Dynamic::ExceptionList * exceptions ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Any * result ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual char * target_most_derived_interface ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Boolean target_is_a ( const char * id ACE_ENV_ARG_DECL_WITH_DEFAULTS) @@ -195,7 +195,7 @@ public: private: TAO_ServerRequestInfo_CORBA_DomainManager_get_domain_policy (const TAO_ServerRequestInfo_CORBA_DomainManager_get_domain_policy &); void operator= (const TAO_ServerRequestInfo_CORBA_DomainManager_get_domain_policy &); - + private: POA_CORBA::DomainManager *_tao_impl; const CORBA::PolicyType & policy_type_; @@ -221,16 +221,16 @@ TAO_ServerRequestInfo_CORBA_DomainManager_get_domain_policy::arguments (ACE_ENV_ Dynamic::ParameterList *parameter_list = TAO_RequestInfo_Util::make_parameter_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + Dynamic::ParameterList_var safe_parameter_list = parameter_list; - + parameter_list->length (1); CORBA::ULong len = 0; - + (*parameter_list)[len].argument <<= policy_type_; (*parameter_list)[len].mode = CORBA::PARAM_IN; len++; - + return safe_parameter_list._retn (); } @@ -242,12 +242,12 @@ TAO_ServerRequestInfo_CORBA_DomainManager_get_domain_policy::exceptions (ACE_ENV Dynamic::ExceptionList *exception_list = TAO_RequestInfo_Util::make_exception_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return exception_list; } -CORBA::Any * +CORBA::Any * TAO_ServerRequestInfo_CORBA_DomainManager_get_domain_policy::result (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { @@ -256,11 +256,11 @@ TAO_ServerRequestInfo_CORBA_DomainManager_get_domain_policy::result (ACE_ENV_SIN CORBA::Any *result_any = TAO_RequestInfo_Util::make_any (tk_void_any ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + CORBA::Any_var safe_result_any = result_any; - + (*result_any) <<= this->_result; - + return safe_result_any._retn (); } @@ -282,7 +282,7 @@ TAO_ServerRequestInfo_CORBA_DomainManager_get_domain_policy::target_is_a ( return this->_tao_impl->_is_a (id ACE_ENV_ARG_PARAMETER); } -void +void TAO_ServerRequestInfo_CORBA_DomainManager_get_domain_policy::result (::CORBA::Policy_ptr result) { // Update the result. @@ -306,14 +306,14 @@ POA_CORBA::_TAO_DomainManager_Strategized_Proxy_Broker::_TAO_DomainManager_Strat { for (int i = 0; i < TAO_Collocation_Strategies::CS_LAST; ++i) this->proxy_cache_[i] = 0; - + } POA_CORBA::_TAO_DomainManager_Strategized_Proxy_Broker::~_TAO_DomainManager_Strategized_Proxy_Broker (void) { for (int i = 0; i < TAO_Collocation_Strategies::CS_LAST; ++i) delete this->proxy_cache_[i]; - + } CORBA::_TAO_DomainManager_Proxy_Impl& @@ -325,25 +325,25 @@ POA_CORBA::_TAO_DomainManager_Strategized_Proxy_Broker::select_proxy ( int strategy = TAO_ORB_Core::collocation_strategy (object ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (*this->proxy_cache_[strategy]); - + if (this->proxy_cache_[strategy] != 0) return *this->proxy_cache_[strategy]; - + this->create_proxy (strategy ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (*this->proxy_cache_[strategy]); - + return *this->proxy_cache_[strategy]; - + } -void +void POA_CORBA::_TAO_DomainManager_Strategized_Proxy_Broker::create_proxy ( int strategy ACE_ENV_ARG_DECL ) { ACE_GUARD (TAO_SYNCH_MUTEX, guard, this->mutex_); - + if (this->proxy_cache_[strategy] == 0) { switch (strategy) @@ -356,7 +356,7 @@ POA_CORBA::_TAO_DomainManager_Strategized_Proxy_Broker::create_proxy ( ); ACE_CHECK; break; - + case TAO_Collocation_Strategies::CS_DIRECT_STRATEGY: ACE_NEW_THROW_EX ( this->proxy_cache_[strategy], @@ -365,7 +365,7 @@ POA_CORBA::_TAO_DomainManager_Strategized_Proxy_Broker::create_proxy ( ); ACE_CHECK; break; - + case TAO_Collocation_Strategies::CS_REMOTE_STRATEGY: default: ACE_NEW_THROW_EX ( @@ -375,9 +375,9 @@ POA_CORBA::_TAO_DomainManager_Strategized_Proxy_Broker::create_proxy ( ); ACE_CHECK; break; - + } - + } } @@ -397,13 +397,13 @@ CORBA__TAO_DomainManager_Proxy_Broker_Factory_function (CORBA::Object_ptr obj) int CORBA__TAO_DomainManager_Proxy_Broker_Factory_Initializer (long) { - CORBA__TAO_DomainManager_Proxy_Broker_Factory_function_pointer = + CORBA__TAO_DomainManager_Proxy_Broker_Factory_function_pointer = CORBA__TAO_DomainManager_Proxy_Broker_Factory_function; - + return 0; } -static int CORBA__TAO_DomainManager_Proxy_Broker_Stub_Factory_Initializer_Scarecrow = +static int CORBA__TAO_DomainManager_Proxy_Broker_Stub_Factory_Initializer_Scarecrow = CORBA__TAO_DomainManager_Proxy_Broker_Factory_Initializer (ACE_reinterpret_cast (long, CORBA__TAO_DomainManager_Proxy_Broker_Factory_Initializer)); @@ -437,7 +437,9 @@ POA_CORBA::_TAO_DomainManager_ThruPOA_Proxy_Impl::_TAO_DomainManager_ThruPOA_Pro forward_to.out () ACE_ENV_ARG_PARAMETER ); - ACE_CHECK_RETURN (_tao_retval._retn ()); + ACE_CHECK_RETURN (_tao_retval._retn ()); + servant_upcall.pre_invoke_collocated_request (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN (_tao_retval._retn ()); return ACE_reinterpret_cast ( POA_CORBA::DomainManager_ptr, servant_upcall.servant ()->_downcast ( @@ -475,14 +477,14 @@ POA_CORBA::_TAO_DomainManager_Direct_Proxy_Impl::_TAO_DomainManager_Direct_Proxy )->get_domain_policy ( policy_type ACE_ENV_ARG_PARAMETER ); - + } // // End Direct Proxy Implementation /////////////////////////////////////////////////////////////////////// -// TAO_IDL - Generated from +// TAO_IDL - Generated from // be/be_visitor_interface/interface_ss.cpp:100 POA_CORBA::DomainManager::DomainManager (void) { @@ -521,38 +523,38 @@ ACE_THROW (CORBA::MARSHAL ()); #if (TAO_HAS_INTERCEPTORS == 1) TAO_Object_Adapter::Servant_Upcall *_tao_upcall = ACE_static_cast (TAO_Object_Adapter::Servant_Upcall *, _tao_servant_upcall); - + TAO_ServerRequestInterceptor_Adapter _tao_vfr ( _tao_server_request.orb_core ()->server_request_interceptors (), _tao_server_request.interceptor_count () ); - + TAO_ServerRequestInfo_CORBA_DomainManager_get_domain_policy _tao_ri ( _tao_server_request, _tao_upcall, _tao_impl, policy_type ACE_ENV_ARG_PARAMETER ); - + ACE_TRY { { TAO_PICurrent_Guard _tao_pi_guard (_tao_ri.server_request (), 1 /* Copy TSC to RSC */); - + _tao_vfr.receive_request (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; - + #endif /* TAO_HAS_INTERCEPTORS */ - _tao_retval = + _tao_retval = _tao_impl->get_domain_policy ( policy_type ACE_ENV_ARG_PARAMETER ); TAO_INTERCEPTOR_CHECK; - + #if (TAO_HAS_INTERCEPTORS == 1) } - + ::CORBA::Policy_ptr _tao_retval_info = _tao_retval._retn (); _tao_ri.result (_tao_retval_info); _tao_retval = _tao_retval_info; @@ -568,11 +570,11 @@ ACE_THROW (CORBA::MARSHAL ()); ACE_ENV_ARG_PARAMETER ); ACE_TRY_CHECK; - + PortableInterceptor::ReplyStatus _tao_status = _tao_ri.reply_status (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - + if (_tao_status == PortableInterceptor::SYSTEM_EXCEPTION || _tao_status == PortableInterceptor::USER_EXCEPTION) ACE_RE_THROW; @@ -580,11 +582,11 @@ ACE_THROW (CORBA::MARSHAL ()); ACE_ENDTRY; ACE_CHECK; #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_server_request.init_reply (); - + TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); - + if (!( (_tao_out << _tao_retval.in ()) )) @@ -592,11 +594,11 @@ ACE_THROW (CORBA::MARSHAL ()); // In case _tao_servant_upcall is not used in this function ACE_UNUSED_ARG (_tao_servant_upcall); - + } void POA_CORBA::DomainManager::_is_a_skel ( - TAO_ServerRequest &_tao_server_request, + TAO_ServerRequest &_tao_server_request, void * _tao_object_reference, void * /* Servant_Upcall */ ACE_ENV_ARG_DECL @@ -608,10 +610,10 @@ void POA_CORBA::DomainManager::_is_a_skel ( CORBA::String_var value; if (!(_tao_in >> value.out ())) ACE_THROW (CORBA::MARSHAL ()); - + _tao_retval = _tao_impl->_is_a (value.in () ACE_ENV_ARG_PARAMETER); ACE_CHECK; - + _tao_server_request.init_reply (); TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); if (!(_tao_out << CORBA::Any::from_boolean (_tao_retval))) @@ -619,7 +621,7 @@ void POA_CORBA::DomainManager::_is_a_skel ( } void POA_CORBA::DomainManager::_non_existent_skel ( - TAO_ServerRequest &_tao_server_request, + TAO_ServerRequest &_tao_server_request, void * _tao_object_reference, void * /* Servant_Upcall */ ACE_ENV_ARG_DECL @@ -629,7 +631,7 @@ void POA_CORBA::DomainManager::_non_existent_skel ( CORBA::Boolean _tao_retval = _tao_impl->_non_existent (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK; - + _tao_server_request.init_reply (); TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); if (!(_tao_out << CORBA::Any::from_boolean (_tao_retval))) @@ -637,7 +639,7 @@ void POA_CORBA::DomainManager::_non_existent_skel ( } void POA_CORBA::DomainManager::_interface_skel ( - TAO_ServerRequest &_tao_server_request, + TAO_ServerRequest &_tao_server_request, void * _tao_object_reference, void * /* Servant_Upcall */ ACE_ENV_ARG_DECL @@ -646,27 +648,27 @@ void POA_CORBA::DomainManager::_interface_skel ( POA_CORBA::DomainManager *_tao_impl = (POA_CORBA::DomainManager *) _tao_object_reference; CORBA_InterfaceDef_ptr _tao_retval = 0; CORBA::Boolean _tao_result = 0; - + TAO_IFR_Client_Adapter *_tao_adapter = ACE_Dynamic_Service<TAO_IFR_Client_Adapter>::instance ( TAO_ORB_Core::ifr_client_adapter_name () ); - + if (_tao_adapter == 0) { ACE_THROW (CORBA::INTF_REPOS ()); } - + ACE_TRY { - _tao_retval = + _tao_retval = _tao_impl->_get_interface (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - + _tao_server_request.init_reply (); - + TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); - + _tao_result = _tao_adapter->interfacedef_cdr_insert ( _tao_out, @@ -678,7 +680,7 @@ void POA_CORBA::DomainManager::_interface_skel ( _tao_adapter->dispose (_tao_retval); } ACE_ENDTRY; - + if (_tao_result == 0) { ACE_THROW (CORBA::MARSHAL ()); @@ -733,20 +735,20 @@ POA_CORBA::DomainManager::_this (ACE_ENV_SINGLE_ARG_DECL) { TAO_Stub *stub = this->_create_stub (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + TAO_Stub_Auto_Ptr safe_stub (stub); - + CORBA::Object_ptr tmp = CORBA::Object::_nil (); - + if (stub->servant_orb_var ()->orb_core ()->optimize_collocation_objects ()) ACE_NEW_RETURN (tmp, CORBA::Object (stub, 1, this), 0); else ACE_NEW_RETURN (tmp, CORBA::Object (stub, 0, this), 0); - + CORBA::Object_var obj = tmp; - + (void) safe_stub.release (); - + return ::CORBA::DomainManager::_unchecked_narrow (obj.in ()); } @@ -830,18 +832,18 @@ TAO_CORBA_ConstructionPolicy_Perfect_Hash_OpTable::lookup (const char *str, unsi static const class TAO_operation_db_entry wordlist[] = { {"",0},{"",0},{"",0},{"",0}, - {"copy", &POA_CORBA::ConstructionPolicy::copy_skel}, + {"copy", &POA_CORBA::ConstructionPolicy::copy_skel}, {"_is_a", &POA_CORBA::ConstructionPolicy::_is_a_skel}, {"",0}, - {"destroy", &POA_CORBA::ConstructionPolicy::destroy_skel}, + {"destroy", &POA_CORBA::ConstructionPolicy::destroy_skel}, {"",0},{"",0}, {"_interface", &POA_CORBA::ConstructionPolicy::_interface_skel}, {"",0},{"",0}, {"_non_existent", &POA_CORBA::ConstructionPolicy::_non_existent_skel}, {"",0},{"",0}, - {"_get_policy_type", &POA_CORBA::ConstructionPolicy::_get_policy_type_skel}, + {"_get_policy_type", &POA_CORBA::ConstructionPolicy::_get_policy_type_skel}, {"",0},{"",0}, - {"make_domain_manager", &POA_CORBA::ConstructionPolicy::make_domain_manager_skel}, + {"make_domain_manager", &POA_CORBA::ConstructionPolicy::make_domain_manager_skel}, }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) @@ -877,36 +879,36 @@ public: ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual Dynamic::ExceptionList * exceptions ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Any * result ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual char * target_most_derived_interface ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Boolean target_is_a ( const char * id ACE_ENV_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + private: TAO_ServerRequestInfo_CORBA_ConstructionPolicy_make_domain_manager (const TAO_ServerRequestInfo_CORBA_ConstructionPolicy_make_domain_manager &); void operator= (const TAO_ServerRequestInfo_CORBA_ConstructionPolicy_make_domain_manager &); - + private: POA_CORBA::ConstructionPolicy *_tao_impl; CORBA::InterfaceDef_ptr object_type_; const CORBA::Boolean & constr_policy_; - + }; TAO_ServerRequestInfo_CORBA_ConstructionPolicy_make_domain_manager::TAO_ServerRequestInfo_CORBA_ConstructionPolicy_make_domain_manager ( @@ -930,19 +932,19 @@ TAO_ServerRequestInfo_CORBA_ConstructionPolicy_make_domain_manager::arguments (A Dynamic::ParameterList *parameter_list = TAO_RequestInfo_Util::make_parameter_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + Dynamic::ParameterList_var safe_parameter_list = parameter_list; - + parameter_list->length (2); CORBA::ULong len = 0; - + (*parameter_list)[len].argument <<= this->object_type_; (*parameter_list)[len].mode = CORBA::PARAM_IN; len++; (*parameter_list)[len].argument <<= CORBA::Any::from_boolean (this->constr_policy_); (*parameter_list)[len].mode = CORBA::PARAM_IN; len++; - + return safe_parameter_list._retn (); } @@ -954,12 +956,12 @@ TAO_ServerRequestInfo_CORBA_ConstructionPolicy_make_domain_manager::exceptions ( Dynamic::ExceptionList *exception_list = TAO_RequestInfo_Util::make_exception_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return exception_list; } -CORBA::Any * +CORBA::Any * TAO_ServerRequestInfo_CORBA_ConstructionPolicy_make_domain_manager::result (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { @@ -968,7 +970,7 @@ TAO_ServerRequestInfo_CORBA_ConstructionPolicy_make_domain_manager::result (ACE_ CORBA::Any *result_any = TAO_RequestInfo_Util::make_any (tk_void_any ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return result_any; } @@ -1007,14 +1009,14 @@ POA_CORBA::_TAO_ConstructionPolicy_Strategized_Proxy_Broker::_TAO_ConstructionPo { for (int i = 0; i < TAO_Collocation_Strategies::CS_LAST; ++i) this->proxy_cache_[i] = 0; - + } POA_CORBA::_TAO_ConstructionPolicy_Strategized_Proxy_Broker::~_TAO_ConstructionPolicy_Strategized_Proxy_Broker (void) { for (int i = 0; i < TAO_Collocation_Strategies::CS_LAST; ++i) delete this->proxy_cache_[i]; - + } CORBA::_TAO_ConstructionPolicy_Proxy_Impl& @@ -1026,25 +1028,25 @@ POA_CORBA::_TAO_ConstructionPolicy_Strategized_Proxy_Broker::select_proxy ( int strategy = TAO_ORB_Core::collocation_strategy (object ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (*this->proxy_cache_[strategy]); - + if (this->proxy_cache_[strategy] != 0) return *this->proxy_cache_[strategy]; - + this->create_proxy (strategy ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (*this->proxy_cache_[strategy]); - + return *this->proxy_cache_[strategy]; - + } -void +void POA_CORBA::_TAO_ConstructionPolicy_Strategized_Proxy_Broker::create_proxy ( int strategy ACE_ENV_ARG_DECL ) { ACE_GUARD (TAO_SYNCH_MUTEX, guard, this->mutex_); - + if (this->proxy_cache_[strategy] == 0) { switch (strategy) @@ -1057,7 +1059,7 @@ POA_CORBA::_TAO_ConstructionPolicy_Strategized_Proxy_Broker::create_proxy ( ); ACE_CHECK; break; - + case TAO_Collocation_Strategies::CS_DIRECT_STRATEGY: ACE_NEW_THROW_EX ( this->proxy_cache_[strategy], @@ -1066,7 +1068,7 @@ POA_CORBA::_TAO_ConstructionPolicy_Strategized_Proxy_Broker::create_proxy ( ); ACE_CHECK; break; - + case TAO_Collocation_Strategies::CS_REMOTE_STRATEGY: default: ACE_NEW_THROW_EX ( @@ -1076,9 +1078,9 @@ POA_CORBA::_TAO_ConstructionPolicy_Strategized_Proxy_Broker::create_proxy ( ); ACE_CHECK; break; - + } - + } } @@ -1098,13 +1100,13 @@ CORBA__TAO_ConstructionPolicy_Proxy_Broker_Factory_function (CORBA::Object_ptr o int CORBA__TAO_ConstructionPolicy_Proxy_Broker_Factory_Initializer (long) { - CORBA__TAO_ConstructionPolicy_Proxy_Broker_Factory_function_pointer = + CORBA__TAO_ConstructionPolicy_Proxy_Broker_Factory_function_pointer = CORBA__TAO_ConstructionPolicy_Proxy_Broker_Factory_function; - + return 0; } -static int CORBA__TAO_ConstructionPolicy_Proxy_Broker_Stub_Factory_Initializer_Scarecrow = +static int CORBA__TAO_ConstructionPolicy_Proxy_Broker_Stub_Factory_Initializer_Scarecrow = CORBA__TAO_ConstructionPolicy_Proxy_Broker_Factory_Initializer (ACE_reinterpret_cast (long, CORBA__TAO_ConstructionPolicy_Proxy_Broker_Factory_Initializer)); @@ -1137,7 +1139,9 @@ void POA_CORBA::_TAO_ConstructionPolicy_ThruPOA_Proxy_Impl::make_domain_manager forward_to.out () ACE_ENV_ARG_PARAMETER ); - ACE_CHECK; + ACE_CHECK; + servant_upcall.pre_invoke_collocated_request (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; ACE_reinterpret_cast ( POA_CORBA::ConstructionPolicy_ptr, servant_upcall.servant ()->_downcast ( @@ -1179,14 +1183,14 @@ void POA_CORBA::_TAO_ConstructionPolicy_Direct_Proxy_Impl::make_domain_manager object_type, constr_policy ACE_ENV_ARG_PARAMETER ); - + } // // End Direct Proxy Implementation /////////////////////////////////////////////////////////////////////// -// TAO_IDL - Generated from +// TAO_IDL - Generated from // be/be_visitor_interface/interface_ss.cpp:100 POA_CORBA::ConstructionPolicy::ConstructionPolicy (void) { @@ -1228,12 +1232,12 @@ ACE_THROW (CORBA::MARSHAL ()); #if (TAO_HAS_INTERCEPTORS == 1) TAO_Object_Adapter::Servant_Upcall *_tao_upcall = ACE_static_cast (TAO_Object_Adapter::Servant_Upcall *, _tao_servant_upcall); - + TAO_ServerRequestInterceptor_Adapter _tao_vfr ( _tao_server_request.orb_core ()->server_request_interceptors (), _tao_server_request.interceptor_count () ); - + TAO_ServerRequestInfo_CORBA_ConstructionPolicy_make_domain_manager _tao_ri ( _tao_server_request, _tao_upcall, @@ -1241,27 +1245,27 @@ ACE_THROW (CORBA::MARSHAL ()); object_type.in (), constr_policy ACE_ENV_ARG_PARAMETER ); - + ACE_TRY { { TAO_PICurrent_Guard _tao_pi_guard (_tao_ri.server_request (), 1 /* Copy TSC to RSC */); - + _tao_vfr.receive_request (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; - + #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_impl->make_domain_manager ( object_type.in (), constr_policy ACE_ENV_ARG_PARAMETER ); TAO_INTERCEPTOR_CHECK; - + #if (TAO_HAS_INTERCEPTORS == 1) } - + _tao_ri.reply_status (PortableInterceptor::SUCCESSFUL); _tao_vfr.send_reply (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; @@ -1274,11 +1278,11 @@ ACE_THROW (CORBA::MARSHAL ()); ACE_ENV_ARG_PARAMETER ); ACE_TRY_CHECK; - + PortableInterceptor::ReplyStatus _tao_status = _tao_ri.reply_status (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - + if (_tao_status == PortableInterceptor::SYSTEM_EXCEPTION || _tao_status == PortableInterceptor::USER_EXCEPTION) ACE_RE_THROW; @@ -1286,16 +1290,16 @@ ACE_THROW (CORBA::MARSHAL ()); ACE_ENDTRY; ACE_CHECK; #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_server_request.init_reply (); - + // In case _tao_servant_upcall is not used in this function ACE_UNUSED_ARG (_tao_servant_upcall); - + } void POA_CORBA::ConstructionPolicy::_is_a_skel ( - TAO_ServerRequest &_tao_server_request, + TAO_ServerRequest &_tao_server_request, void * _tao_object_reference, void * /* Servant_Upcall */ ACE_ENV_ARG_DECL @@ -1307,10 +1311,10 @@ void POA_CORBA::ConstructionPolicy::_is_a_skel ( CORBA::String_var value; if (!(_tao_in >> value.out ())) ACE_THROW (CORBA::MARSHAL ()); - + _tao_retval = _tao_impl->_is_a (value.in () ACE_ENV_ARG_PARAMETER); ACE_CHECK; - + _tao_server_request.init_reply (); TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); if (!(_tao_out << CORBA::Any::from_boolean (_tao_retval))) @@ -1318,7 +1322,7 @@ void POA_CORBA::ConstructionPolicy::_is_a_skel ( } void POA_CORBA::ConstructionPolicy::_non_existent_skel ( - TAO_ServerRequest &_tao_server_request, + TAO_ServerRequest &_tao_server_request, void * _tao_object_reference, void * /* Servant_Upcall */ ACE_ENV_ARG_DECL @@ -1328,7 +1332,7 @@ void POA_CORBA::ConstructionPolicy::_non_existent_skel ( CORBA::Boolean _tao_retval = _tao_impl->_non_existent (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK; - + _tao_server_request.init_reply (); TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); if (!(_tao_out << CORBA::Any::from_boolean (_tao_retval))) @@ -1336,7 +1340,7 @@ void POA_CORBA::ConstructionPolicy::_non_existent_skel ( } void POA_CORBA::ConstructionPolicy::_interface_skel ( - TAO_ServerRequest &_tao_server_request, + TAO_ServerRequest &_tao_server_request, void * _tao_object_reference, void * /* Servant_Upcall */ ACE_ENV_ARG_DECL @@ -1345,27 +1349,27 @@ void POA_CORBA::ConstructionPolicy::_interface_skel ( POA_CORBA::ConstructionPolicy *_tao_impl = (POA_CORBA::ConstructionPolicy *) _tao_object_reference; CORBA_InterfaceDef_ptr _tao_retval = 0; CORBA::Boolean _tao_result = 0; - + TAO_IFR_Client_Adapter *_tao_adapter = ACE_Dynamic_Service<TAO_IFR_Client_Adapter>::instance ( TAO_ORB_Core::ifr_client_adapter_name () ); - + if (_tao_adapter == 0) { ACE_THROW (CORBA::INTF_REPOS ()); } - + ACE_TRY { - _tao_retval = + _tao_retval = _tao_impl->_get_interface (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - + _tao_server_request.init_reply (); - + TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); - + _tao_result = _tao_adapter->interfacedef_cdr_insert ( _tao_out, @@ -1377,7 +1381,7 @@ void POA_CORBA::ConstructionPolicy::_interface_skel ( _tao_adapter->dispose (_tao_retval); } ACE_ENDTRY; - + if (_tao_result == 0) { ACE_THROW (CORBA::MARSHAL ()); @@ -1435,20 +1439,20 @@ POA_CORBA::ConstructionPolicy::_this (ACE_ENV_SINGLE_ARG_DECL) { TAO_Stub *stub = this->_create_stub (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + TAO_Stub_Auto_Ptr safe_stub (stub); - + CORBA::Object_ptr tmp = CORBA::Object::_nil (); - + if (stub->servant_orb_var ()->orb_core ()->optimize_collocation_objects ()) ACE_NEW_RETURN (tmp, CORBA::Object (stub, 1, this), 0); else ACE_NEW_RETURN (tmp, CORBA::Object (stub, 0, this), 0); - + CORBA::Object_var obj = tmp; - + (void) safe_stub.release (); - + return ::CORBA::ConstructionPolicy::_unchecked_narrow (obj.in ()); } diff --git a/TAO/tao/PortableServer/Collocated_Object.cpp b/TAO/tao/PortableServer/Collocated_Object.cpp index 977e3cb6085..e6de093ef81 100644 --- a/TAO/tao/PortableServer/Collocated_Object.cpp +++ b/TAO/tao/PortableServer/Collocated_Object.cpp @@ -67,6 +67,10 @@ TAO_Collocated_Object::_is_a (const CORBA::Char *logical_type_id forward_to.out () ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); + + servant_upcall.pre_invoke_collocated_request (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN (0); + return servant_upcall.servant ()->_is_a (logical_type_id ACE_ENV_ARG_PARAMETER); } @@ -133,6 +137,10 @@ TAO_Collocated_Object::_non_existent (ACE_ENV_SINGLE_ARG_DECL) forward_to.out () ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; + + servant_upcall.pre_invoke_collocated_request (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + return servant_upcall.servant ()->_non_existent (ACE_ENV_SINGLE_ARG_PARAMETER); } diff --git a/TAO/tao/PortableServer/Default_Servant_Dispatcher.cpp b/TAO/tao/PortableServer/Default_Servant_Dispatcher.cpp index 8d837738eee..8dac4b1b381 100644 --- a/TAO/tao/PortableServer/Default_Servant_Dispatcher.cpp +++ b/TAO/tao/PortableServer/Default_Servant_Dispatcher.cpp @@ -9,17 +9,6 @@ TAO_Default_Servant_Dispatcher::~TAO_Default_Servant_Dispatcher (void) { } -void -TAO_Default_Servant_Dispatcher::dispatch ( - TAO_Object_Adapter::Servant_Upcall &servant_upcall, - TAO_ServerRequest &req - ACE_ENV_ARG_DECL) -{ - servant_upcall.servant ()->_dispatch (req, - &servant_upcall - ACE_ENV_ARG_PARAMETER); -} - TAO_POA * TAO_Default_Servant_Dispatcher::create_POA (const ACE_CString &name, TAO_POA_Manager &poa_manager, @@ -48,3 +37,28 @@ TAO_Default_Servant_Dispatcher::create_POA (const ACE_CString &name, return poa; } + +void +TAO_Default_Servant_Dispatcher::pre_invoke_remote_request (TAO_POA &, + CORBA::Short, + TAO_Service_Context &, + TAO_Service_Context &, + TAO_Object_Adapter::Servant_Upcall::Pre_Invoke_State & + ACE_ENV_ARG_DECL) +{ +} + +void +TAO_Default_Servant_Dispatcher::pre_invoke_collocated_request (TAO_POA &, + CORBA::Short, + TAO_Object_Adapter::Servant_Upcall::Pre_Invoke_State & + ACE_ENV_ARG_DECL) +{ +} + +void +TAO_Default_Servant_Dispatcher::post_invoke (TAO_POA &, + TAO_Object_Adapter::Servant_Upcall::Pre_Invoke_State &) + +{ +} diff --git a/TAO/tao/PortableServer/Default_Servant_Dispatcher.h b/TAO/tao/PortableServer/Default_Servant_Dispatcher.h index 0c4ac669529..596722dc340 100644 --- a/TAO/tao/PortableServer/Default_Servant_Dispatcher.h +++ b/TAO/tao/PortableServer/Default_Servant_Dispatcher.h @@ -37,21 +37,34 @@ class TAO_PortableServer_Export TAO_Default_Servant_Dispatcher public: virtual ~TAO_Default_Servant_Dispatcher (void); - /// Dispatch the request to the servant. - virtual void dispatch (TAO_Object_Adapter::Servant_Upcall &servant_upcall, - TAO_ServerRequest &req - ACE_ENV_ARG_DECL); + /// Pre_invoke remote request. + void pre_invoke_remote_request (TAO_POA &poa, + CORBA::Short servant_priority, + TAO_Service_Context &request_service_context, + TAO_Service_Context &reply_service_context, + TAO_Object_Adapter::Servant_Upcall::Pre_Invoke_State &pre_invoke_state + ACE_ENV_ARG_DECL); + + /// Pre_invoke collocated request. + void pre_invoke_collocated_request (TAO_POA &poa, + CORBA::Short servant_priority, + TAO_Object_Adapter::Servant_Upcall::Pre_Invoke_State &pre_invoke_state + ACE_ENV_ARG_DECL); + + /// Post_invoke request. + void post_invoke (TAO_POA &poa, + TAO_Object_Adapter::Servant_Upcall::Pre_Invoke_State &pre_invoke_state); /// Factory method for creating new POA's. - virtual TAO_POA *create_POA (const ACE_CString &name, - TAO_POA_Manager &poa_manager, - const TAO_POA_Policy_Set &policies, - TAO_POA *parent, - ACE_Lock &lock, - TAO_SYNCH_MUTEX &thread_lock, - TAO_ORB_Core &orb_core, - TAO_Object_Adapter *object_adapter - ACE_ENV_ARG_DECL); + TAO_POA *create_POA (const ACE_CString &name, + TAO_POA_Manager &poa_manager, + const TAO_POA_Policy_Set &policies, + TAO_POA *parent, + ACE_Lock &lock, + TAO_SYNCH_MUTEX &thread_lock, + TAO_ORB_Core &orb_core, + TAO_Object_Adapter *object_adapter + ACE_ENV_ARG_DECL); }; #include "ace/post.h" diff --git a/TAO/tao/PortableServer/ImplRepoS.cpp b/TAO/tao/PortableServer/ImplRepoS.cpp index 4fce690b791..99c8b786241 100644 --- a/TAO/tao/PortableServer/ImplRepoS.cpp +++ b/TAO/tao/PortableServer/ImplRepoS.cpp @@ -127,10 +127,10 @@ TAO_ImplementationRepository_ServerObject_Perfect_Hash_OpTable::lookup (const ch static const class TAO_operation_db_entry wordlist[] = { {"",0},{"",0},{"",0},{"",0}, - {"ping", &POA_ImplementationRepository::ServerObject::ping_skel}, + {"ping", &POA_ImplementationRepository::ServerObject::ping_skel}, {"_is_a", &POA_ImplementationRepository::ServerObject::_is_a_skel}, {"",0},{"",0}, - {"shutdown", &POA_ImplementationRepository::ServerObject::shutdown_skel}, + {"shutdown", &POA_ImplementationRepository::ServerObject::shutdown_skel}, {"",0}, {"_interface", &POA_ImplementationRepository::ServerObject::_interface_skel}, {"",0},{"",0}, @@ -168,34 +168,34 @@ public: ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual Dynamic::ExceptionList * exceptions ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Any * result ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual char * target_most_derived_interface ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Boolean target_is_a ( const char * id ACE_ENV_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + private: TAO_ServerRequestInfo_ImplementationRepository_ServerObject_ping (const TAO_ServerRequestInfo_ImplementationRepository_ServerObject_ping &); void operator= (const TAO_ServerRequestInfo_ImplementationRepository_ServerObject_ping &); - + private: POA_ImplementationRepository::ServerObject *_tao_impl; - + }; TAO_ServerRequestInfo_ImplementationRepository_ServerObject_ping::TAO_ServerRequestInfo_ImplementationRepository_ServerObject_ping ( @@ -215,7 +215,7 @@ TAO_ServerRequestInfo_ImplementationRepository_ServerObject_ping::arguments (ACE Dynamic::ParameterList *parameter_list = TAO_RequestInfo_Util::make_parameter_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return parameter_list; } @@ -227,12 +227,12 @@ TAO_ServerRequestInfo_ImplementationRepository_ServerObject_ping::exceptions (AC Dynamic::ExceptionList *exception_list = TAO_RequestInfo_Util::make_exception_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return exception_list; } -CORBA::Any * +CORBA::Any * TAO_ServerRequestInfo_ImplementationRepository_ServerObject_ping::result (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { @@ -241,7 +241,7 @@ TAO_ServerRequestInfo_ImplementationRepository_ServerObject_ping::result (ACE_EN CORBA::Any *result_any = TAO_RequestInfo_Util::make_any (tk_void_any ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return result_any; } @@ -276,34 +276,34 @@ public: ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual Dynamic::ExceptionList * exceptions ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Any * result ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual char * target_most_derived_interface ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Boolean target_is_a ( const char * id ACE_ENV_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + private: TAO_ServerRequestInfo_ImplementationRepository_ServerObject_shutdown (const TAO_ServerRequestInfo_ImplementationRepository_ServerObject_shutdown &); void operator= (const TAO_ServerRequestInfo_ImplementationRepository_ServerObject_shutdown &); - + private: POA_ImplementationRepository::ServerObject *_tao_impl; - + }; TAO_ServerRequestInfo_ImplementationRepository_ServerObject_shutdown::TAO_ServerRequestInfo_ImplementationRepository_ServerObject_shutdown ( @@ -323,7 +323,7 @@ TAO_ServerRequestInfo_ImplementationRepository_ServerObject_shutdown::arguments Dynamic::ParameterList *parameter_list = TAO_RequestInfo_Util::make_parameter_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return parameter_list; } @@ -335,12 +335,12 @@ TAO_ServerRequestInfo_ImplementationRepository_ServerObject_shutdown::exceptions Dynamic::ExceptionList *exception_list = TAO_RequestInfo_Util::make_exception_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return exception_list; } -CORBA::Any * +CORBA::Any * TAO_ServerRequestInfo_ImplementationRepository_ServerObject_shutdown::result (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { @@ -349,7 +349,7 @@ TAO_ServerRequestInfo_ImplementationRepository_ServerObject_shutdown::result (AC CORBA::Any *result_any = TAO_RequestInfo_Util::make_any (tk_void_any ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return result_any; } @@ -388,14 +388,14 @@ POA_ImplementationRepository::_TAO_ServerObject_Strategized_Proxy_Broker::_TAO_S { for (int i = 0; i < TAO_Collocation_Strategies::CS_LAST; ++i) this->proxy_cache_[i] = 0; - + } POA_ImplementationRepository::_TAO_ServerObject_Strategized_Proxy_Broker::~_TAO_ServerObject_Strategized_Proxy_Broker (void) { for (int i = 0; i < TAO_Collocation_Strategies::CS_LAST; ++i) delete this->proxy_cache_[i]; - + } ImplementationRepository::_TAO_ServerObject_Proxy_Impl& @@ -407,25 +407,25 @@ POA_ImplementationRepository::_TAO_ServerObject_Strategized_Proxy_Broker::select int strategy = TAO_ORB_Core::collocation_strategy (object ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (*this->proxy_cache_[strategy]); - + if (this->proxy_cache_[strategy] != 0) return *this->proxy_cache_[strategy]; - + this->create_proxy (strategy ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (*this->proxy_cache_[strategy]); - + return *this->proxy_cache_[strategy]; - + } -void +void POA_ImplementationRepository::_TAO_ServerObject_Strategized_Proxy_Broker::create_proxy ( int strategy ACE_ENV_ARG_DECL ) { ACE_GUARD (TAO_SYNCH_MUTEX, guard, this->mutex_); - + if (this->proxy_cache_[strategy] == 0) { switch (strategy) @@ -438,7 +438,7 @@ POA_ImplementationRepository::_TAO_ServerObject_Strategized_Proxy_Broker::create ); ACE_CHECK; break; - + case TAO_Collocation_Strategies::CS_DIRECT_STRATEGY: ACE_NEW_THROW_EX ( this->proxy_cache_[strategy], @@ -447,7 +447,7 @@ POA_ImplementationRepository::_TAO_ServerObject_Strategized_Proxy_Broker::create ); ACE_CHECK; break; - + case TAO_Collocation_Strategies::CS_REMOTE_STRATEGY: default: ACE_NEW_THROW_EX ( @@ -457,9 +457,9 @@ POA_ImplementationRepository::_TAO_ServerObject_Strategized_Proxy_Broker::create ); ACE_CHECK; break; - + } - + } } @@ -479,13 +479,13 @@ ImplementationRepository__TAO_ServerObject_Proxy_Broker_Factory_function (CORBA: int ImplementationRepository__TAO_ServerObject_Proxy_Broker_Factory_Initializer (long) { - ImplementationRepository__TAO_ServerObject_Proxy_Broker_Factory_function_pointer = + ImplementationRepository__TAO_ServerObject_Proxy_Broker_Factory_function_pointer = ImplementationRepository__TAO_ServerObject_Proxy_Broker_Factory_function; - + return 0; } -static int ImplementationRepository__TAO_ServerObject_Proxy_Broker_Stub_Factory_Initializer_Scarecrow = +static int ImplementationRepository__TAO_ServerObject_Proxy_Broker_Stub_Factory_Initializer_Scarecrow = ImplementationRepository__TAO_ServerObject_Proxy_Broker_Factory_Initializer (ACE_reinterpret_cast (long, ImplementationRepository__TAO_ServerObject_Proxy_Broker_Factory_Initializer)); @@ -516,7 +516,9 @@ void POA_ImplementationRepository::_TAO_ServerObject_ThruPOA_Proxy_Impl::ping ( forward_to.out () ACE_ENV_ARG_PARAMETER ); - ACE_CHECK; + ACE_CHECK; + servant_upcall.pre_invoke_collocated_request (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; ACE_reinterpret_cast ( POA_ImplementationRepository::ServerObject_ptr, servant_upcall.servant ()->_downcast ( @@ -546,7 +548,9 @@ void POA_ImplementationRepository::_TAO_ServerObject_ThruPOA_Proxy_Impl::shutdow forward_to.out () ACE_ENV_ARG_PARAMETER ); - ACE_CHECK; + ACE_CHECK; + servant_upcall.pre_invoke_collocated_request (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; ACE_reinterpret_cast ( POA_ImplementationRepository::ServerObject_ptr, servant_upcall.servant ()->_downcast ( @@ -584,7 +588,7 @@ void POA_ImplementationRepository::_TAO_ServerObject_Direct_Proxy_Impl::ping ( )->ping ( ACE_ENV_SINGLE_ARG_PARAMETER ); - + } void POA_ImplementationRepository::_TAO_ServerObject_Direct_Proxy_Impl::shutdown ( @@ -601,14 +605,14 @@ void POA_ImplementationRepository::_TAO_ServerObject_Direct_Proxy_Impl::shutdown )->shutdown ( ACE_ENV_SINGLE_ARG_PARAMETER ); - + } // // End Direct Proxy Implementation /////////////////////////////////////////////////////////////////////// -// TAO_IDL - Generated from +// TAO_IDL - Generated from // be/be_visitor_interface/interface_ss.cpp:100 POA_ImplementationRepository::ServerObject::ServerObject (void) { @@ -636,41 +640,41 @@ void POA_ImplementationRepository::ServerObject::ping_skel ( _tao_object_reference ); _tao_server_request.argument_flag (0); - + #if (TAO_HAS_INTERCEPTORS == 1) TAO_Object_Adapter::Servant_Upcall *_tao_upcall = ACE_static_cast (TAO_Object_Adapter::Servant_Upcall *, _tao_servant_upcall); - + TAO_ServerRequestInterceptor_Adapter _tao_vfr ( _tao_server_request.orb_core ()->server_request_interceptors (), _tao_server_request.interceptor_count () ); - + TAO_ServerRequestInfo_ImplementationRepository_ServerObject_ping _tao_ri ( _tao_server_request, _tao_upcall, _tao_impl ACE_ENV_ARG_PARAMETER ); - + ACE_TRY { { TAO_PICurrent_Guard _tao_pi_guard (_tao_ri.server_request (), 1 /* Copy TSC to RSC */); - + _tao_vfr.receive_request (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; - + #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_impl->ping ( ACE_ENV_SINGLE_ARG_PARAMETER ); TAO_INTERCEPTOR_CHECK; - + #if (TAO_HAS_INTERCEPTORS == 1) } - + _tao_ri.reply_status (PortableInterceptor::SUCCESSFUL); _tao_vfr.send_reply (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; @@ -683,11 +687,11 @@ void POA_ImplementationRepository::ServerObject::ping_skel ( ACE_ENV_ARG_PARAMETER ); ACE_TRY_CHECK; - + PortableInterceptor::ReplyStatus _tao_status = _tao_ri.reply_status (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - + if (_tao_status == PortableInterceptor::SYSTEM_EXCEPTION || _tao_status == PortableInterceptor::USER_EXCEPTION) ACE_RE_THROW; @@ -695,12 +699,12 @@ void POA_ImplementationRepository::ServerObject::ping_skel ( ACE_ENDTRY; ACE_CHECK; #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_server_request.init_reply (); - + // In case _tao_servant_upcall is not used in this function ACE_UNUSED_ARG (_tao_servant_upcall); - + } void POA_ImplementationRepository::ServerObject::shutdown_skel ( @@ -716,41 +720,41 @@ void POA_ImplementationRepository::ServerObject::shutdown_skel ( _tao_object_reference ); _tao_server_request.argument_flag (0); - + #if (TAO_HAS_INTERCEPTORS == 1) TAO_Object_Adapter::Servant_Upcall *_tao_upcall = ACE_static_cast (TAO_Object_Adapter::Servant_Upcall *, _tao_servant_upcall); - + TAO_ServerRequestInterceptor_Adapter _tao_vfr ( _tao_server_request.orb_core ()->server_request_interceptors (), _tao_server_request.interceptor_count () ); - + TAO_ServerRequestInfo_ImplementationRepository_ServerObject_shutdown _tao_ri ( _tao_server_request, _tao_upcall, _tao_impl ACE_ENV_ARG_PARAMETER ); - + ACE_TRY { { TAO_PICurrent_Guard _tao_pi_guard (_tao_ri.server_request (), 1 /* Copy TSC to RSC */); - + _tao_vfr.receive_request (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; - + #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_impl->shutdown ( ACE_ENV_SINGLE_ARG_PARAMETER ); TAO_INTERCEPTOR_CHECK; - + #if (TAO_HAS_INTERCEPTORS == 1) } - + _tao_ri.reply_status (PortableInterceptor::SUCCESSFUL); _tao_vfr.send_reply (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; @@ -763,11 +767,11 @@ void POA_ImplementationRepository::ServerObject::shutdown_skel ( ACE_ENV_ARG_PARAMETER ); ACE_TRY_CHECK; - + PortableInterceptor::ReplyStatus _tao_status = _tao_ri.reply_status (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - + if (_tao_status == PortableInterceptor::SYSTEM_EXCEPTION || _tao_status == PortableInterceptor::USER_EXCEPTION) ACE_RE_THROW; @@ -775,16 +779,16 @@ void POA_ImplementationRepository::ServerObject::shutdown_skel ( ACE_ENDTRY; ACE_CHECK; #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_server_request.init_reply (); - + // In case _tao_servant_upcall is not used in this function ACE_UNUSED_ARG (_tao_servant_upcall); - + } void POA_ImplementationRepository::ServerObject::_is_a_skel ( - TAO_ServerRequest &_tao_server_request, + TAO_ServerRequest &_tao_server_request, void * _tao_object_reference, void * /* Servant_Upcall */ ACE_ENV_ARG_DECL @@ -796,10 +800,10 @@ void POA_ImplementationRepository::ServerObject::_is_a_skel ( CORBA::String_var value; if (!(_tao_in >> value.out ())) ACE_THROW (CORBA::MARSHAL ()); - + _tao_retval = _tao_impl->_is_a (value.in () ACE_ENV_ARG_PARAMETER); ACE_CHECK; - + _tao_server_request.init_reply (); TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); if (!(_tao_out << CORBA::Any::from_boolean (_tao_retval))) @@ -807,7 +811,7 @@ void POA_ImplementationRepository::ServerObject::_is_a_skel ( } void POA_ImplementationRepository::ServerObject::_non_existent_skel ( - TAO_ServerRequest &_tao_server_request, + TAO_ServerRequest &_tao_server_request, void * _tao_object_reference, void * /* Servant_Upcall */ ACE_ENV_ARG_DECL @@ -817,7 +821,7 @@ void POA_ImplementationRepository::ServerObject::_non_existent_skel ( CORBA::Boolean _tao_retval = _tao_impl->_non_existent (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK; - + _tao_server_request.init_reply (); TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); if (!(_tao_out << CORBA::Any::from_boolean (_tao_retval))) @@ -825,7 +829,7 @@ void POA_ImplementationRepository::ServerObject::_non_existent_skel ( } void POA_ImplementationRepository::ServerObject::_interface_skel ( - TAO_ServerRequest &_tao_server_request, + TAO_ServerRequest &_tao_server_request, void * _tao_object_reference, void * /* Servant_Upcall */ ACE_ENV_ARG_DECL @@ -834,27 +838,27 @@ void POA_ImplementationRepository::ServerObject::_interface_skel ( POA_ImplementationRepository::ServerObject *_tao_impl = (POA_ImplementationRepository::ServerObject *) _tao_object_reference; CORBA_InterfaceDef_ptr _tao_retval = 0; CORBA::Boolean _tao_result = 0; - + TAO_IFR_Client_Adapter *_tao_adapter = ACE_Dynamic_Service<TAO_IFR_Client_Adapter>::instance ( TAO_ORB_Core::ifr_client_adapter_name () ); - + if (_tao_adapter == 0) { ACE_THROW (CORBA::INTF_REPOS ()); } - + ACE_TRY { - _tao_retval = + _tao_retval = _tao_impl->_get_interface (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - + _tao_server_request.init_reply (); - + TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); - + _tao_result = _tao_adapter->interfacedef_cdr_insert ( _tao_out, @@ -866,7 +870,7 @@ void POA_ImplementationRepository::ServerObject::_interface_skel ( _tao_adapter->dispose (_tao_retval); } ACE_ENDTRY; - + if (_tao_result == 0) { ACE_THROW (CORBA::MARSHAL ()); @@ -921,20 +925,20 @@ POA_ImplementationRepository::ServerObject::_this (ACE_ENV_SINGLE_ARG_DECL) { TAO_Stub *stub = this->_create_stub (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + TAO_Stub_Auto_Ptr safe_stub (stub); - + CORBA::Object_ptr tmp = CORBA::Object::_nil (); - + if (stub->servant_orb_var ()->orb_core ()->optimize_collocation_objects ()) ACE_NEW_RETURN (tmp, CORBA::Object (stub, 1, this), 0); else ACE_NEW_RETURN (tmp, CORBA::Object (stub, 0, this), 0); - + CORBA::Object_var obj = tmp; - + (void) safe_stub.release (); - + return ::ImplementationRepository::ServerObject::_unchecked_narrow (obj.in ()); } @@ -1018,23 +1022,23 @@ TAO_ImplementationRepository_Administration_Perfect_Hash_OpTable::lookup (const static const class TAO_operation_db_entry wordlist[] = { {"",0},{"",0},{"",0},{"",0}, - {"find", &POA_ImplementationRepository::Administration::find_skel}, + {"find", &POA_ImplementationRepository::Administration::find_skel}, {"",0},{"",0},{"",0},{"",0}, {"_is_a", &POA_ImplementationRepository::Administration::_is_a_skel}, {"_interface", &POA_ImplementationRepository::Administration::_interface_skel}, {"",0},{"",0}, - {"remove_server", &POA_ImplementationRepository::Administration::remove_server_skel}, - {"list", &POA_ImplementationRepository::Administration::list_skel}, - {"register_server", &POA_ImplementationRepository::Administration::register_server_skel}, + {"remove_server", &POA_ImplementationRepository::Administration::remove_server_skel}, + {"list", &POA_ImplementationRepository::Administration::list_skel}, + {"register_server", &POA_ImplementationRepository::Administration::register_server_skel}, {"",0}, - {"reregister_server", &POA_ImplementationRepository::Administration::reregister_server_skel}, + {"reregister_server", &POA_ImplementationRepository::Administration::reregister_server_skel}, {"_non_existent", &POA_ImplementationRepository::Administration::_non_existent_skel}, - {"activate_server", &POA_ImplementationRepository::Administration::activate_server_skel}, - {"shutdown_server", &POA_ImplementationRepository::Administration::shutdown_server_skel}, + {"activate_server", &POA_ImplementationRepository::Administration::activate_server_skel}, + {"shutdown_server", &POA_ImplementationRepository::Administration::shutdown_server_skel}, {"",0}, - {"server_is_running", &POA_ImplementationRepository::Administration::server_is_running_skel}, + {"server_is_running", &POA_ImplementationRepository::Administration::server_is_running_skel}, {"",0},{"",0},{"",0},{"",0},{"",0}, - {"server_is_shutting_down", &POA_ImplementationRepository::Administration::server_is_shutting_down_skel}, + {"server_is_shutting_down", &POA_ImplementationRepository::Administration::server_is_shutting_down_skel}, }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) @@ -1069,35 +1073,35 @@ public: ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual Dynamic::ExceptionList * exceptions ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Any * result ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual char * target_most_derived_interface ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Boolean target_is_a ( const char * id ACE_ENV_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + private: TAO_ServerRequestInfo_ImplementationRepository_Administration_activate_server (const TAO_ServerRequestInfo_ImplementationRepository_Administration_activate_server &); void operator= (const TAO_ServerRequestInfo_ImplementationRepository_Administration_activate_server &); - + private: POA_ImplementationRepository::Administration *_tao_impl; const char * server_; - + }; TAO_ServerRequestInfo_ImplementationRepository_Administration_activate_server::TAO_ServerRequestInfo_ImplementationRepository_Administration_activate_server ( @@ -1119,16 +1123,16 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_activate_server::a Dynamic::ParameterList *parameter_list = TAO_RequestInfo_Util::make_parameter_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + Dynamic::ParameterList_var safe_parameter_list = parameter_list; - + parameter_list->length (1); CORBA::ULong len = 0; - + (*parameter_list)[len].argument <<= server_; (*parameter_list)[len].mode = CORBA::PARAM_IN; len++; - + return safe_parameter_list._retn (); } @@ -1140,15 +1144,15 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_activate_server::e Dynamic::ExceptionList *exception_list = TAO_RequestInfo_Util::make_exception_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + Dynamic::ExceptionList_var safe_exception_list = exception_list; - - static CORBA::TypeCode_ptr _tao_ImplementationRepository_Administration_activate_server_exceptiondata[] = + + static CORBA::TypeCode_ptr _tao_ImplementationRepository_Administration_activate_server_exceptiondata[] = { ImplementationRepository::Administration::_tc_NotFound, ImplementationRepository::Administration::_tc_CannotActivate }; - + exception_list->length (2); for (CORBA::ULong i = 0; i < 2; ++i) { @@ -1161,7 +1165,7 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_activate_server::e } -CORBA::Any * +CORBA::Any * TAO_ServerRequestInfo_ImplementationRepository_Administration_activate_server::result (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { @@ -1170,7 +1174,7 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_activate_server::r CORBA::Any *result_any = TAO_RequestInfo_Util::make_any (tk_void_any ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return result_any; } @@ -1207,36 +1211,36 @@ public: ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual Dynamic::ExceptionList * exceptions ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Any * result ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual char * target_most_derived_interface ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Boolean target_is_a ( const char * id ACE_ENV_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + private: TAO_ServerRequestInfo_ImplementationRepository_Administration_register_server (const TAO_ServerRequestInfo_ImplementationRepository_Administration_register_server &); void operator= (const TAO_ServerRequestInfo_ImplementationRepository_Administration_register_server &); - + private: POA_ImplementationRepository::Administration *_tao_impl; const char * server_; const ImplementationRepository::StartupOptions & options_; - + }; TAO_ServerRequestInfo_ImplementationRepository_Administration_register_server::TAO_ServerRequestInfo_ImplementationRepository_Administration_register_server ( @@ -1260,19 +1264,19 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_register_server::a Dynamic::ParameterList *parameter_list = TAO_RequestInfo_Util::make_parameter_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + Dynamic::ParameterList_var safe_parameter_list = parameter_list; - + parameter_list->length (2); CORBA::ULong len = 0; - + (*parameter_list)[len].argument <<= server_; (*parameter_list)[len].mode = CORBA::PARAM_IN; len++; (*parameter_list)[len].argument <<= this->options_; (*parameter_list)[len].mode = CORBA::PARAM_IN; len++; - + return safe_parameter_list._retn (); } @@ -1284,14 +1288,14 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_register_server::e Dynamic::ExceptionList *exception_list = TAO_RequestInfo_Util::make_exception_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + Dynamic::ExceptionList_var safe_exception_list = exception_list; - - static CORBA::TypeCode_ptr _tao_ImplementationRepository_Administration_register_server_exceptiondata[] = + + static CORBA::TypeCode_ptr _tao_ImplementationRepository_Administration_register_server_exceptiondata[] = { ImplementationRepository::Administration::_tc_AlreadyRegistered }; - + exception_list->length (1); for (CORBA::ULong i = 0; i < 1; ++i) { @@ -1304,7 +1308,7 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_register_server::e } -CORBA::Any * +CORBA::Any * TAO_ServerRequestInfo_ImplementationRepository_Administration_register_server::result (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { @@ -1313,7 +1317,7 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_register_server::r CORBA::Any *result_any = TAO_RequestInfo_Util::make_any (tk_void_any ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return result_any; } @@ -1350,36 +1354,36 @@ public: ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual Dynamic::ExceptionList * exceptions ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Any * result ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual char * target_most_derived_interface ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Boolean target_is_a ( const char * id ACE_ENV_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + private: TAO_ServerRequestInfo_ImplementationRepository_Administration_reregister_server (const TAO_ServerRequestInfo_ImplementationRepository_Administration_reregister_server &); void operator= (const TAO_ServerRequestInfo_ImplementationRepository_Administration_reregister_server &); - + private: POA_ImplementationRepository::Administration *_tao_impl; const char * server_; const ImplementationRepository::StartupOptions & options_; - + }; TAO_ServerRequestInfo_ImplementationRepository_Administration_reregister_server::TAO_ServerRequestInfo_ImplementationRepository_Administration_reregister_server ( @@ -1403,19 +1407,19 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_reregister_server: Dynamic::ParameterList *parameter_list = TAO_RequestInfo_Util::make_parameter_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + Dynamic::ParameterList_var safe_parameter_list = parameter_list; - + parameter_list->length (2); CORBA::ULong len = 0; - + (*parameter_list)[len].argument <<= server_; (*parameter_list)[len].mode = CORBA::PARAM_IN; len++; (*parameter_list)[len].argument <<= this->options_; (*parameter_list)[len].mode = CORBA::PARAM_IN; len++; - + return safe_parameter_list._retn (); } @@ -1427,12 +1431,12 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_reregister_server: Dynamic::ExceptionList *exception_list = TAO_RequestInfo_Util::make_exception_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return exception_list; } -CORBA::Any * +CORBA::Any * TAO_ServerRequestInfo_ImplementationRepository_Administration_reregister_server::result (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { @@ -1441,7 +1445,7 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_reregister_server: CORBA::Any *result_any = TAO_RequestInfo_Util::make_any (tk_void_any ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return result_any; } @@ -1477,35 +1481,35 @@ public: ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual Dynamic::ExceptionList * exceptions ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Any * result ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual char * target_most_derived_interface ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Boolean target_is_a ( const char * id ACE_ENV_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + private: TAO_ServerRequestInfo_ImplementationRepository_Administration_remove_server (const TAO_ServerRequestInfo_ImplementationRepository_Administration_remove_server &); void operator= (const TAO_ServerRequestInfo_ImplementationRepository_Administration_remove_server &); - + private: POA_ImplementationRepository::Administration *_tao_impl; const char * server_; - + }; TAO_ServerRequestInfo_ImplementationRepository_Administration_remove_server::TAO_ServerRequestInfo_ImplementationRepository_Administration_remove_server ( @@ -1527,16 +1531,16 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_remove_server::arg Dynamic::ParameterList *parameter_list = TAO_RequestInfo_Util::make_parameter_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + Dynamic::ParameterList_var safe_parameter_list = parameter_list; - + parameter_list->length (1); CORBA::ULong len = 0; - + (*parameter_list)[len].argument <<= server_; (*parameter_list)[len].mode = CORBA::PARAM_IN; len++; - + return safe_parameter_list._retn (); } @@ -1548,14 +1552,14 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_remove_server::exc Dynamic::ExceptionList *exception_list = TAO_RequestInfo_Util::make_exception_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + Dynamic::ExceptionList_var safe_exception_list = exception_list; - - static CORBA::TypeCode_ptr _tao_ImplementationRepository_Administration_remove_server_exceptiondata[] = + + static CORBA::TypeCode_ptr _tao_ImplementationRepository_Administration_remove_server_exceptiondata[] = { ImplementationRepository::Administration::_tc_NotFound }; - + exception_list->length (1); for (CORBA::ULong i = 0; i < 1; ++i) { @@ -1568,7 +1572,7 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_remove_server::exc } -CORBA::Any * +CORBA::Any * TAO_ServerRequestInfo_ImplementationRepository_Administration_remove_server::result (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { @@ -1577,7 +1581,7 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_remove_server::res CORBA::Any *result_any = TAO_RequestInfo_Util::make_any (tk_void_any ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return result_any; } @@ -1613,35 +1617,35 @@ public: ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual Dynamic::ExceptionList * exceptions ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Any * result ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual char * target_most_derived_interface ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Boolean target_is_a ( const char * id ACE_ENV_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + private: TAO_ServerRequestInfo_ImplementationRepository_Administration_shutdown_server (const TAO_ServerRequestInfo_ImplementationRepository_Administration_shutdown_server &); void operator= (const TAO_ServerRequestInfo_ImplementationRepository_Administration_shutdown_server &); - + private: POA_ImplementationRepository::Administration *_tao_impl; const char * server_; - + }; TAO_ServerRequestInfo_ImplementationRepository_Administration_shutdown_server::TAO_ServerRequestInfo_ImplementationRepository_Administration_shutdown_server ( @@ -1663,16 +1667,16 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_shutdown_server::a Dynamic::ParameterList *parameter_list = TAO_RequestInfo_Util::make_parameter_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + Dynamic::ParameterList_var safe_parameter_list = parameter_list; - + parameter_list->length (1); CORBA::ULong len = 0; - + (*parameter_list)[len].argument <<= server_; (*parameter_list)[len].mode = CORBA::PARAM_IN; len++; - + return safe_parameter_list._retn (); } @@ -1684,14 +1688,14 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_shutdown_server::e Dynamic::ExceptionList *exception_list = TAO_RequestInfo_Util::make_exception_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + Dynamic::ExceptionList_var safe_exception_list = exception_list; - - static CORBA::TypeCode_ptr _tao_ImplementationRepository_Administration_shutdown_server_exceptiondata[] = + + static CORBA::TypeCode_ptr _tao_ImplementationRepository_Administration_shutdown_server_exceptiondata[] = { ImplementationRepository::Administration::_tc_NotFound }; - + exception_list->length (1); for (CORBA::ULong i = 0; i < 1; ++i) { @@ -1704,7 +1708,7 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_shutdown_server::e } -CORBA::Any * +CORBA::Any * TAO_ServerRequestInfo_ImplementationRepository_Administration_shutdown_server::result (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { @@ -1713,7 +1717,7 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_shutdown_server::r CORBA::Any *result_any = TAO_RequestInfo_Util::make_any (tk_void_any ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return result_any; } @@ -1751,21 +1755,21 @@ public: ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual Dynamic::ExceptionList * exceptions ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Any * result ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual char * target_most_derived_interface ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Boolean target_is_a ( const char * id ACE_ENV_ARG_DECL_WITH_DEFAULTS) @@ -1776,7 +1780,7 @@ public: private: TAO_ServerRequestInfo_ImplementationRepository_Administration_server_is_running (const TAO_ServerRequestInfo_ImplementationRepository_Administration_server_is_running &); void operator= (const TAO_ServerRequestInfo_ImplementationRepository_Administration_server_is_running &); - + private: POA_ImplementationRepository::Administration *_tao_impl; const char * server_; @@ -1808,12 +1812,12 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_server_is_running: Dynamic::ParameterList *parameter_list = TAO_RequestInfo_Util::make_parameter_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + Dynamic::ParameterList_var safe_parameter_list = parameter_list; - + parameter_list->length (3); CORBA::ULong len = 0; - + (*parameter_list)[len].argument <<= server_; (*parameter_list)[len].mode = CORBA::PARAM_IN; len++; @@ -1823,7 +1827,7 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_server_is_running: (*parameter_list)[len].argument <<= this->server_object_; (*parameter_list)[len].mode = CORBA::PARAM_IN; len++; - + return safe_parameter_list._retn (); } @@ -1835,14 +1839,14 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_server_is_running: Dynamic::ExceptionList *exception_list = TAO_RequestInfo_Util::make_exception_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + Dynamic::ExceptionList_var safe_exception_list = exception_list; - - static CORBA::TypeCode_ptr _tao_ImplementationRepository_Administration_server_is_running_exceptiondata[] = + + static CORBA::TypeCode_ptr _tao_ImplementationRepository_Administration_server_is_running_exceptiondata[] = { ImplementationRepository::Administration::_tc_NotFound }; - + exception_list->length (1); for (CORBA::ULong i = 0; i < 1; ++i) { @@ -1855,7 +1859,7 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_server_is_running: } -CORBA::Any * +CORBA::Any * TAO_ServerRequestInfo_ImplementationRepository_Administration_server_is_running::result (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { @@ -1864,11 +1868,11 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_server_is_running: CORBA::Any *result_any = TAO_RequestInfo_Util::make_any (tk_void_any ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + CORBA::Any_var safe_result_any = result_any; - + (*result_any) <<= this->_result; - + return safe_result_any._retn (); } @@ -1890,7 +1894,7 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_server_is_running: return this->_tao_impl->_is_a (id ACE_ENV_ARG_PARAMETER); } -void +void TAO_ServerRequestInfo_ImplementationRepository_Administration_server_is_running::result (char * result) { // Update the result. @@ -1911,35 +1915,35 @@ public: ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual Dynamic::ExceptionList * exceptions ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Any * result ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual char * target_most_derived_interface ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Boolean target_is_a ( const char * id ACE_ENV_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + private: TAO_ServerRequestInfo_ImplementationRepository_Administration_server_is_shutting_down (const TAO_ServerRequestInfo_ImplementationRepository_Administration_server_is_shutting_down &); void operator= (const TAO_ServerRequestInfo_ImplementationRepository_Administration_server_is_shutting_down &); - + private: POA_ImplementationRepository::Administration *_tao_impl; const char * server_; - + }; TAO_ServerRequestInfo_ImplementationRepository_Administration_server_is_shutting_down::TAO_ServerRequestInfo_ImplementationRepository_Administration_server_is_shutting_down ( @@ -1961,16 +1965,16 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_server_is_shutting Dynamic::ParameterList *parameter_list = TAO_RequestInfo_Util::make_parameter_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + Dynamic::ParameterList_var safe_parameter_list = parameter_list; - + parameter_list->length (1); CORBA::ULong len = 0; - + (*parameter_list)[len].argument <<= server_; (*parameter_list)[len].mode = CORBA::PARAM_IN; len++; - + return safe_parameter_list._retn (); } @@ -1982,14 +1986,14 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_server_is_shutting Dynamic::ExceptionList *exception_list = TAO_RequestInfo_Util::make_exception_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + Dynamic::ExceptionList_var safe_exception_list = exception_list; - - static CORBA::TypeCode_ptr _tao_ImplementationRepository_Administration_server_is_shutting_down_exceptiondata[] = + + static CORBA::TypeCode_ptr _tao_ImplementationRepository_Administration_server_is_shutting_down_exceptiondata[] = { ImplementationRepository::Administration::_tc_NotFound }; - + exception_list->length (1); for (CORBA::ULong i = 0; i < 1; ++i) { @@ -2002,7 +2006,7 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_server_is_shutting } -CORBA::Any * +CORBA::Any * TAO_ServerRequestInfo_ImplementationRepository_Administration_server_is_shutting_down::result (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { @@ -2011,7 +2015,7 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_server_is_shutting CORBA::Any *result_any = TAO_RequestInfo_Util::make_any (tk_void_any ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return result_any; } @@ -2047,35 +2051,35 @@ public: ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual Dynamic::ExceptionList * exceptions ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Any * result ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual char * target_most_derived_interface ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Boolean target_is_a ( const char * id ACE_ENV_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + private: TAO_ServerRequestInfo_ImplementationRepository_Administration_find (const TAO_ServerRequestInfo_ImplementationRepository_Administration_find &); void operator= (const TAO_ServerRequestInfo_ImplementationRepository_Administration_find &); - + private: POA_ImplementationRepository::Administration *_tao_impl; const char * server_; - + }; TAO_ServerRequestInfo_ImplementationRepository_Administration_find::TAO_ServerRequestInfo_ImplementationRepository_Administration_find ( @@ -2097,16 +2101,16 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_find::arguments (A Dynamic::ParameterList *parameter_list = TAO_RequestInfo_Util::make_parameter_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + Dynamic::ParameterList_var safe_parameter_list = parameter_list; - + parameter_list->length (1); CORBA::ULong len = 0; - + (*parameter_list)[len].argument <<= server_; (*parameter_list)[len].mode = CORBA::PARAM_IN; len++; - + return safe_parameter_list._retn (); } @@ -2118,14 +2122,14 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_find::exceptions ( Dynamic::ExceptionList *exception_list = TAO_RequestInfo_Util::make_exception_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + Dynamic::ExceptionList_var safe_exception_list = exception_list; - - static CORBA::TypeCode_ptr _tao_ImplementationRepository_Administration_find_exceptiondata[] = + + static CORBA::TypeCode_ptr _tao_ImplementationRepository_Administration_find_exceptiondata[] = { ImplementationRepository::Administration::_tc_NotFound }; - + exception_list->length (1); for (CORBA::ULong i = 0; i < 1; ++i) { @@ -2138,7 +2142,7 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_find::exceptions ( } -CORBA::Any * +CORBA::Any * TAO_ServerRequestInfo_ImplementationRepository_Administration_find::result (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { @@ -2147,7 +2151,7 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_find::result (ACE_ CORBA::Any *result_any = TAO_RequestInfo_Util::make_any (tk_void_any ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return result_any; } @@ -2176,7 +2180,7 @@ public: TAO_ServerRequest &_tao_server_request, TAO_Object_Adapter::Servant_Upcall *tao_servant_upcall,POA_ImplementationRepository::Administration *tao_impl , - const CORBA::ULong & how_many + const CORBA::ULong & how_many ACE_ENV_ARG_DECL_WITH_DEFAULTS ); @@ -2184,35 +2188,35 @@ public: ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual Dynamic::ExceptionList * exceptions ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Any * result ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual char * target_most_derived_interface ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Boolean target_is_a ( const char * id ACE_ENV_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + private: TAO_ServerRequestInfo_ImplementationRepository_Administration_list (const TAO_ServerRequestInfo_ImplementationRepository_Administration_list &); void operator= (const TAO_ServerRequestInfo_ImplementationRepository_Administration_list &); - + private: POA_ImplementationRepository::Administration *_tao_impl; const CORBA::ULong & how_many_; - + }; @@ -2220,12 +2224,12 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_list::TAO_ServerRe TAO_ServerRequest &_tao_server_request, TAO_Object_Adapter::Servant_Upcall *_tao_servant_upcall, POA_ImplementationRepository::Administration *tao_impl, - const CORBA::ULong & how_many + const CORBA::ULong & how_many ACE_ENV_ARG_DECL_NOT_USED ) : TAO_ServerRequestInfo (_tao_server_request, _tao_servant_upcall), _tao_impl (tao_impl), - how_many_ (how_many) + how_many_ (how_many) {} @@ -2237,16 +2241,16 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_list::arguments (A Dynamic::ParameterList *parameter_list = TAO_RequestInfo_Util::make_parameter_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + Dynamic::ParameterList_var safe_parameter_list = parameter_list; - + parameter_list->length (1); CORBA::ULong len = 0; - + (*parameter_list)[len].argument <<= how_many_; (*parameter_list)[len].mode = CORBA::PARAM_IN; len++; - + return safe_parameter_list._retn (); } @@ -2259,12 +2263,12 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_list::exceptions ( Dynamic::ExceptionList *exception_list = TAO_RequestInfo_Util::make_exception_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return exception_list; } -CORBA::Any * +CORBA::Any * TAO_ServerRequestInfo_ImplementationRepository_Administration_list::result (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { @@ -2273,7 +2277,7 @@ TAO_ServerRequestInfo_ImplementationRepository_Administration_list::result (ACE_ CORBA::Any *result_any = TAO_RequestInfo_Util::make_any (tk_void_any ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return result_any; } @@ -2312,14 +2316,14 @@ POA_ImplementationRepository::_TAO_Administration_Strategized_Proxy_Broker::_TAO { for (int i = 0; i < TAO_Collocation_Strategies::CS_LAST; ++i) this->proxy_cache_[i] = 0; - + } POA_ImplementationRepository::_TAO_Administration_Strategized_Proxy_Broker::~_TAO_Administration_Strategized_Proxy_Broker (void) { for (int i = 0; i < TAO_Collocation_Strategies::CS_LAST; ++i) delete this->proxy_cache_[i]; - + } ImplementationRepository::_TAO_Administration_Proxy_Impl& @@ -2331,25 +2335,25 @@ POA_ImplementationRepository::_TAO_Administration_Strategized_Proxy_Broker::sele int strategy = TAO_ORB_Core::collocation_strategy (object ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (*this->proxy_cache_[strategy]); - + if (this->proxy_cache_[strategy] != 0) return *this->proxy_cache_[strategy]; - + this->create_proxy (strategy ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (*this->proxy_cache_[strategy]); - + return *this->proxy_cache_[strategy]; - + } -void +void POA_ImplementationRepository::_TAO_Administration_Strategized_Proxy_Broker::create_proxy ( int strategy ACE_ENV_ARG_DECL ) { ACE_GUARD (TAO_SYNCH_MUTEX, guard, this->mutex_); - + if (this->proxy_cache_[strategy] == 0) { switch (strategy) @@ -2362,7 +2366,7 @@ POA_ImplementationRepository::_TAO_Administration_Strategized_Proxy_Broker::crea ); ACE_CHECK; break; - + case TAO_Collocation_Strategies::CS_DIRECT_STRATEGY: ACE_NEW_THROW_EX ( this->proxy_cache_[strategy], @@ -2371,7 +2375,7 @@ POA_ImplementationRepository::_TAO_Administration_Strategized_Proxy_Broker::crea ); ACE_CHECK; break; - + case TAO_Collocation_Strategies::CS_REMOTE_STRATEGY: default: ACE_NEW_THROW_EX ( @@ -2381,9 +2385,9 @@ POA_ImplementationRepository::_TAO_Administration_Strategized_Proxy_Broker::crea ); ACE_CHECK; break; - + } - + } } @@ -2403,13 +2407,13 @@ ImplementationRepository__TAO_Administration_Proxy_Broker_Factory_function (CORB int ImplementationRepository__TAO_Administration_Proxy_Broker_Factory_Initializer (long) { - ImplementationRepository__TAO_Administration_Proxy_Broker_Factory_function_pointer = + ImplementationRepository__TAO_Administration_Proxy_Broker_Factory_function_pointer = ImplementationRepository__TAO_Administration_Proxy_Broker_Factory_function; - + return 0; } -static int ImplementationRepository__TAO_Administration_Proxy_Broker_Stub_Factory_Initializer_Scarecrow = +static int ImplementationRepository__TAO_Administration_Proxy_Broker_Stub_Factory_Initializer_Scarecrow = ImplementationRepository__TAO_Administration_Proxy_Broker_Factory_Initializer (ACE_reinterpret_cast (long, ImplementationRepository__TAO_Administration_Proxy_Broker_Factory_Initializer)); @@ -2443,7 +2447,9 @@ void POA_ImplementationRepository::_TAO_Administration_ThruPOA_Proxy_Impl::activ forward_to.out () ACE_ENV_ARG_PARAMETER ); - ACE_CHECK; + ACE_CHECK; + servant_upcall.pre_invoke_collocated_request (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; ACE_reinterpret_cast ( POA_ImplementationRepository::Administration_ptr, servant_upcall.servant ()->_downcast ( @@ -2476,7 +2482,9 @@ void POA_ImplementationRepository::_TAO_Administration_ThruPOA_Proxy_Impl::regis forward_to.out () ACE_ENV_ARG_PARAMETER ); - ACE_CHECK; + ACE_CHECK; + servant_upcall.pre_invoke_collocated_request (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; ACE_reinterpret_cast ( POA_ImplementationRepository::Administration_ptr, servant_upcall.servant ()->_downcast ( @@ -2509,7 +2517,9 @@ void POA_ImplementationRepository::_TAO_Administration_ThruPOA_Proxy_Impl::rereg forward_to.out () ACE_ENV_ARG_PARAMETER ); - ACE_CHECK; + ACE_CHECK; + servant_upcall.pre_invoke_collocated_request (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; ACE_reinterpret_cast ( POA_ImplementationRepository::Administration_ptr, servant_upcall.servant ()->_downcast ( @@ -2542,7 +2552,9 @@ void POA_ImplementationRepository::_TAO_Administration_ThruPOA_Proxy_Impl::remov forward_to.out () ACE_ENV_ARG_PARAMETER ); - ACE_CHECK; + ACE_CHECK; + servant_upcall.pre_invoke_collocated_request (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; ACE_reinterpret_cast ( POA_ImplementationRepository::Administration_ptr, servant_upcall.servant ()->_downcast ( @@ -2574,7 +2586,9 @@ void POA_ImplementationRepository::_TAO_Administration_ThruPOA_Proxy_Impl::shutd forward_to.out () ACE_ENV_ARG_PARAMETER ); - ACE_CHECK; + ACE_CHECK; + servant_upcall.pre_invoke_collocated_request (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; ACE_reinterpret_cast ( POA_ImplementationRepository::Administration_ptr, servant_upcall.servant ()->_downcast ( @@ -2610,7 +2624,9 @@ char * POA_ImplementationRepository::_TAO_Administration_ThruPOA_Proxy_Impl::ser forward_to.out () ACE_ENV_ARG_PARAMETER ); - ACE_CHECK_RETURN (_tao_retval._retn ()); + ACE_CHECK_RETURN (_tao_retval._retn ()); + servant_upcall.pre_invoke_collocated_request (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN (_tao_retval._retn ()); return ACE_reinterpret_cast ( POA_ImplementationRepository::Administration_ptr, servant_upcall.servant ()->_downcast ( @@ -2643,7 +2659,9 @@ void POA_ImplementationRepository::_TAO_Administration_ThruPOA_Proxy_Impl::serve forward_to.out () ACE_ENV_ARG_PARAMETER ); - ACE_CHECK; + ACE_CHECK; + servant_upcall.pre_invoke_collocated_request (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; ACE_reinterpret_cast ( POA_ImplementationRepository::Administration_ptr, servant_upcall.servant ()->_downcast ( @@ -2676,7 +2694,9 @@ void POA_ImplementationRepository::_TAO_Administration_ThruPOA_Proxy_Impl::find forward_to.out () ACE_ENV_ARG_PARAMETER ); - ACE_CHECK; + ACE_CHECK; + servant_upcall.pre_invoke_collocated_request (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; ACE_reinterpret_cast ( POA_ImplementationRepository::Administration_ptr, servant_upcall.servant ()->_downcast ( @@ -2710,7 +2730,9 @@ void POA_ImplementationRepository::_TAO_Administration_ThruPOA_Proxy_Impl::list forward_to.out () ACE_ENV_ARG_PARAMETER ); - ACE_CHECK; + ACE_CHECK; + servant_upcall.pre_invoke_collocated_request (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; ACE_reinterpret_cast ( POA_ImplementationRepository::Administration_ptr, servant_upcall.servant ()->_downcast ( @@ -2753,7 +2775,7 @@ void POA_ImplementationRepository::_TAO_Administration_Direct_Proxy_Impl::activa )->activate_server ( server ACE_ENV_ARG_PARAMETER ); - + } void POA_ImplementationRepository::_TAO_Administration_Direct_Proxy_Impl::register_server ( @@ -2774,7 +2796,7 @@ void POA_ImplementationRepository::_TAO_Administration_Direct_Proxy_Impl::regist server, options ACE_ENV_ARG_PARAMETER ); - + } void POA_ImplementationRepository::_TAO_Administration_Direct_Proxy_Impl::reregister_server ( @@ -2794,7 +2816,7 @@ void POA_ImplementationRepository::_TAO_Administration_Direct_Proxy_Impl::reregi server, options ACE_ENV_ARG_PARAMETER ); - + } void POA_ImplementationRepository::_TAO_Administration_Direct_Proxy_Impl::remove_server ( @@ -2813,7 +2835,7 @@ void POA_ImplementationRepository::_TAO_Administration_Direct_Proxy_Impl::remove )->remove_server ( server ACE_ENV_ARG_PARAMETER ); - + } void POA_ImplementationRepository::_TAO_Administration_Direct_Proxy_Impl::shutdown_server ( @@ -2832,7 +2854,7 @@ void POA_ImplementationRepository::_TAO_Administration_Direct_Proxy_Impl::shutdo )->shutdown_server ( server ACE_ENV_ARG_PARAMETER ); - + } char * POA_ImplementationRepository::_TAO_Administration_Direct_Proxy_Impl::server_is_running ( @@ -2855,7 +2877,7 @@ char * POA_ImplementationRepository::_TAO_Administration_Direct_Proxy_Impl::serv addr, server_object ACE_ENV_ARG_PARAMETER ); - + } void POA_ImplementationRepository::_TAO_Administration_Direct_Proxy_Impl::server_is_shutting_down ( @@ -2874,7 +2896,7 @@ void POA_ImplementationRepository::_TAO_Administration_Direct_Proxy_Impl::server )->server_is_shutting_down ( server ACE_ENV_ARG_PARAMETER ); - + } void POA_ImplementationRepository::_TAO_Administration_Direct_Proxy_Impl::find ( @@ -2895,7 +2917,7 @@ void POA_ImplementationRepository::_TAO_Administration_Direct_Proxy_Impl::find server, info ACE_ENV_ARG_PARAMETER ); - + } void POA_ImplementationRepository::_TAO_Administration_Direct_Proxy_Impl::list ( @@ -2917,14 +2939,14 @@ void POA_ImplementationRepository::_TAO_Administration_Direct_Proxy_Impl::list server_list, server_iterator ACE_ENV_ARG_PARAMETER ); - + } // // End Direct Proxy Implementation /////////////////////////////////////////////////////////////////////// -// TAO_IDL - Generated from +// TAO_IDL - Generated from // be/be_visitor_interface/interface_ss.cpp:100 POA_ImplementationRepository::Administration::Administration (void) { @@ -2963,38 +2985,38 @@ ACE_THROW (CORBA::MARSHAL ()); #if (TAO_HAS_INTERCEPTORS == 1) TAO_Object_Adapter::Servant_Upcall *_tao_upcall = ACE_static_cast (TAO_Object_Adapter::Servant_Upcall *, _tao_servant_upcall); - + TAO_ServerRequestInterceptor_Adapter _tao_vfr ( _tao_server_request.orb_core ()->server_request_interceptors (), _tao_server_request.interceptor_count () ); - + TAO_ServerRequestInfo_ImplementationRepository_Administration_activate_server _tao_ri ( _tao_server_request, _tao_upcall, _tao_impl, server.in () ACE_ENV_ARG_PARAMETER ); - + ACE_TRY { { TAO_PICurrent_Guard _tao_pi_guard (_tao_ri.server_request (), 1 /* Copy TSC to RSC */); - + _tao_vfr.receive_request (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; - + #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_impl->activate_server ( server.in () ACE_ENV_ARG_PARAMETER ); TAO_INTERCEPTOR_CHECK; - + #if (TAO_HAS_INTERCEPTORS == 1) } - + _tao_ri.reply_status (PortableInterceptor::SUCCESSFUL); _tao_vfr.send_reply (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; @@ -3007,11 +3029,11 @@ ACE_THROW (CORBA::MARSHAL ()); ACE_ENV_ARG_PARAMETER ); ACE_TRY_CHECK; - + PortableInterceptor::ReplyStatus _tao_status = _tao_ri.reply_status (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - + if (_tao_status == PortableInterceptor::SYSTEM_EXCEPTION || _tao_status == PortableInterceptor::USER_EXCEPTION) ACE_RE_THROW; @@ -3019,12 +3041,12 @@ ACE_THROW (CORBA::MARSHAL ()); ACE_ENDTRY; ACE_CHECK; #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_server_request.init_reply (); - + // In case _tao_servant_upcall is not used in this function ACE_UNUSED_ARG (_tao_servant_upcall); - + } void POA_ImplementationRepository::Administration::register_server_skel ( @@ -3053,12 +3075,12 @@ ACE_THROW (CORBA::MARSHAL ()); #if (TAO_HAS_INTERCEPTORS == 1) TAO_Object_Adapter::Servant_Upcall *_tao_upcall = ACE_static_cast (TAO_Object_Adapter::Servant_Upcall *, _tao_servant_upcall); - + TAO_ServerRequestInterceptor_Adapter _tao_vfr ( _tao_server_request.orb_core ()->server_request_interceptors (), _tao_server_request.interceptor_count () ); - + TAO_ServerRequestInfo_ImplementationRepository_Administration_register_server _tao_ri ( _tao_server_request, _tao_upcall, @@ -3066,27 +3088,27 @@ ACE_THROW (CORBA::MARSHAL ()); server.in (), options ACE_ENV_ARG_PARAMETER ); - + ACE_TRY { { TAO_PICurrent_Guard _tao_pi_guard (_tao_ri.server_request (), 1 /* Copy TSC to RSC */); - + _tao_vfr.receive_request (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; - + #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_impl->register_server ( server.in (), options ACE_ENV_ARG_PARAMETER ); TAO_INTERCEPTOR_CHECK; - + #if (TAO_HAS_INTERCEPTORS == 1) } - + _tao_ri.reply_status (PortableInterceptor::SUCCESSFUL); _tao_vfr.send_reply (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; @@ -3099,11 +3121,11 @@ ACE_THROW (CORBA::MARSHAL ()); ACE_ENV_ARG_PARAMETER ); ACE_TRY_CHECK; - + PortableInterceptor::ReplyStatus _tao_status = _tao_ri.reply_status (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - + if (_tao_status == PortableInterceptor::SYSTEM_EXCEPTION || _tao_status == PortableInterceptor::USER_EXCEPTION) ACE_RE_THROW; @@ -3111,12 +3133,12 @@ ACE_THROW (CORBA::MARSHAL ()); ACE_ENDTRY; ACE_CHECK; #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_server_request.init_reply (); - + // In case _tao_servant_upcall is not used in this function ACE_UNUSED_ARG (_tao_servant_upcall); - + } void POA_ImplementationRepository::Administration::reregister_server_skel ( @@ -3145,12 +3167,12 @@ ACE_THROW (CORBA::MARSHAL ()); #if (TAO_HAS_INTERCEPTORS == 1) TAO_Object_Adapter::Servant_Upcall *_tao_upcall = ACE_static_cast (TAO_Object_Adapter::Servant_Upcall *, _tao_servant_upcall); - + TAO_ServerRequestInterceptor_Adapter _tao_vfr ( _tao_server_request.orb_core ()->server_request_interceptors (), _tao_server_request.interceptor_count () ); - + TAO_ServerRequestInfo_ImplementationRepository_Administration_reregister_server _tao_ri ( _tao_server_request, _tao_upcall, @@ -3158,27 +3180,27 @@ ACE_THROW (CORBA::MARSHAL ()); server.in (), options ACE_ENV_ARG_PARAMETER ); - + ACE_TRY { { TAO_PICurrent_Guard _tao_pi_guard (_tao_ri.server_request (), 1 /* Copy TSC to RSC */); - + _tao_vfr.receive_request (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; - + #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_impl->reregister_server ( server.in (), options ACE_ENV_ARG_PARAMETER ); TAO_INTERCEPTOR_CHECK; - + #if (TAO_HAS_INTERCEPTORS == 1) } - + _tao_ri.reply_status (PortableInterceptor::SUCCESSFUL); _tao_vfr.send_reply (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; @@ -3191,11 +3213,11 @@ ACE_THROW (CORBA::MARSHAL ()); ACE_ENV_ARG_PARAMETER ); ACE_TRY_CHECK; - + PortableInterceptor::ReplyStatus _tao_status = _tao_ri.reply_status (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - + if (_tao_status == PortableInterceptor::SYSTEM_EXCEPTION || _tao_status == PortableInterceptor::USER_EXCEPTION) ACE_RE_THROW; @@ -3203,12 +3225,12 @@ ACE_THROW (CORBA::MARSHAL ()); ACE_ENDTRY; ACE_CHECK; #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_server_request.init_reply (); - + // In case _tao_servant_upcall is not used in this function ACE_UNUSED_ARG (_tao_servant_upcall); - + } void POA_ImplementationRepository::Administration::remove_server_skel ( @@ -3235,38 +3257,38 @@ ACE_THROW (CORBA::MARSHAL ()); #if (TAO_HAS_INTERCEPTORS == 1) TAO_Object_Adapter::Servant_Upcall *_tao_upcall = ACE_static_cast (TAO_Object_Adapter::Servant_Upcall *, _tao_servant_upcall); - + TAO_ServerRequestInterceptor_Adapter _tao_vfr ( _tao_server_request.orb_core ()->server_request_interceptors (), _tao_server_request.interceptor_count () ); - + TAO_ServerRequestInfo_ImplementationRepository_Administration_remove_server _tao_ri ( _tao_server_request, _tao_upcall, _tao_impl, server.in () ACE_ENV_ARG_PARAMETER ); - + ACE_TRY { { TAO_PICurrent_Guard _tao_pi_guard (_tao_ri.server_request (), 1 /* Copy TSC to RSC */); - + _tao_vfr.receive_request (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; - + #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_impl->remove_server ( server.in () ACE_ENV_ARG_PARAMETER ); TAO_INTERCEPTOR_CHECK; - + #if (TAO_HAS_INTERCEPTORS == 1) } - + _tao_ri.reply_status (PortableInterceptor::SUCCESSFUL); _tao_vfr.send_reply (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; @@ -3279,11 +3301,11 @@ ACE_THROW (CORBA::MARSHAL ()); ACE_ENV_ARG_PARAMETER ); ACE_TRY_CHECK; - + PortableInterceptor::ReplyStatus _tao_status = _tao_ri.reply_status (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - + if (_tao_status == PortableInterceptor::SYSTEM_EXCEPTION || _tao_status == PortableInterceptor::USER_EXCEPTION) ACE_RE_THROW; @@ -3291,12 +3313,12 @@ ACE_THROW (CORBA::MARSHAL ()); ACE_ENDTRY; ACE_CHECK; #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_server_request.init_reply (); - + // In case _tao_servant_upcall is not used in this function ACE_UNUSED_ARG (_tao_servant_upcall); - + } void POA_ImplementationRepository::Administration::shutdown_server_skel ( @@ -3323,38 +3345,38 @@ ACE_THROW (CORBA::MARSHAL ()); #if (TAO_HAS_INTERCEPTORS == 1) TAO_Object_Adapter::Servant_Upcall *_tao_upcall = ACE_static_cast (TAO_Object_Adapter::Servant_Upcall *, _tao_servant_upcall); - + TAO_ServerRequestInterceptor_Adapter _tao_vfr ( _tao_server_request.orb_core ()->server_request_interceptors (), _tao_server_request.interceptor_count () ); - + TAO_ServerRequestInfo_ImplementationRepository_Administration_shutdown_server _tao_ri ( _tao_server_request, _tao_upcall, _tao_impl, server.in () ACE_ENV_ARG_PARAMETER ); - + ACE_TRY { { TAO_PICurrent_Guard _tao_pi_guard (_tao_ri.server_request (), 1 /* Copy TSC to RSC */); - + _tao_vfr.receive_request (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; - + #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_impl->shutdown_server ( server.in () ACE_ENV_ARG_PARAMETER ); TAO_INTERCEPTOR_CHECK; - + #if (TAO_HAS_INTERCEPTORS == 1) } - + _tao_ri.reply_status (PortableInterceptor::SUCCESSFUL); _tao_vfr.send_reply (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; @@ -3367,11 +3389,11 @@ ACE_THROW (CORBA::MARSHAL ()); ACE_ENV_ARG_PARAMETER ); ACE_TRY_CHECK; - + PortableInterceptor::ReplyStatus _tao_status = _tao_ri.reply_status (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - + if (_tao_status == PortableInterceptor::SYSTEM_EXCEPTION || _tao_status == PortableInterceptor::USER_EXCEPTION) ACE_RE_THROW; @@ -3379,12 +3401,12 @@ ACE_THROW (CORBA::MARSHAL ()); ACE_ENDTRY; ACE_CHECK; #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_server_request.init_reply (); - + // In case _tao_servant_upcall is not used in this function ACE_UNUSED_ARG (_tao_servant_upcall); - + } void POA_ImplementationRepository::Administration::server_is_running_skel ( @@ -3415,12 +3437,12 @@ ACE_THROW (CORBA::MARSHAL ()); #if (TAO_HAS_INTERCEPTORS == 1) TAO_Object_Adapter::Servant_Upcall *_tao_upcall = ACE_static_cast (TAO_Object_Adapter::Servant_Upcall *, _tao_servant_upcall); - + TAO_ServerRequestInterceptor_Adapter _tao_vfr ( _tao_server_request.orb_core ()->server_request_interceptors (), _tao_server_request.interceptor_count () ); - + TAO_ServerRequestInfo_ImplementationRepository_Administration_server_is_running _tao_ri ( _tao_server_request, _tao_upcall, @@ -3429,28 +3451,28 @@ ACE_THROW (CORBA::MARSHAL ()); addr.in (), server_object.in () ACE_ENV_ARG_PARAMETER ); - + ACE_TRY { { TAO_PICurrent_Guard _tao_pi_guard (_tao_ri.server_request (), 1 /* Copy TSC to RSC */); - + _tao_vfr.receive_request (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; - + #endif /* TAO_HAS_INTERCEPTORS */ - _tao_retval = + _tao_retval = _tao_impl->server_is_running ( server.in (), addr.in (), server_object.in () ACE_ENV_ARG_PARAMETER ); TAO_INTERCEPTOR_CHECK; - + #if (TAO_HAS_INTERCEPTORS == 1) } - + char * _tao_retval_info = _tao_retval._retn (); _tao_ri.result (_tao_retval_info); _tao_retval = _tao_retval_info; @@ -3466,11 +3488,11 @@ ACE_THROW (CORBA::MARSHAL ()); ACE_ENV_ARG_PARAMETER ); ACE_TRY_CHECK; - + PortableInterceptor::ReplyStatus _tao_status = _tao_ri.reply_status (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - + if (_tao_status == PortableInterceptor::SYSTEM_EXCEPTION || _tao_status == PortableInterceptor::USER_EXCEPTION) ACE_RE_THROW; @@ -3478,11 +3500,11 @@ ACE_THROW (CORBA::MARSHAL ()); ACE_ENDTRY; ACE_CHECK; #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_server_request.init_reply (); - + TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); - + if (!( (_tao_out << _tao_retval.in ()) )) @@ -3490,7 +3512,7 @@ ACE_THROW (CORBA::MARSHAL ()); // In case _tao_servant_upcall is not used in this function ACE_UNUSED_ARG (_tao_servant_upcall); - + } void POA_ImplementationRepository::Administration::server_is_shutting_down_skel ( @@ -3517,38 +3539,38 @@ ACE_THROW (CORBA::MARSHAL ()); #if (TAO_HAS_INTERCEPTORS == 1) TAO_Object_Adapter::Servant_Upcall *_tao_upcall = ACE_static_cast (TAO_Object_Adapter::Servant_Upcall *, _tao_servant_upcall); - + TAO_ServerRequestInterceptor_Adapter _tao_vfr ( _tao_server_request.orb_core ()->server_request_interceptors (), _tao_server_request.interceptor_count () ); - + TAO_ServerRequestInfo_ImplementationRepository_Administration_server_is_shutting_down _tao_ri ( _tao_server_request, _tao_upcall, _tao_impl, server.in () ACE_ENV_ARG_PARAMETER ); - + ACE_TRY { { TAO_PICurrent_Guard _tao_pi_guard (_tao_ri.server_request (), 1 /* Copy TSC to RSC */); - + _tao_vfr.receive_request (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; - + #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_impl->server_is_shutting_down ( server.in () ACE_ENV_ARG_PARAMETER ); TAO_INTERCEPTOR_CHECK; - + #if (TAO_HAS_INTERCEPTORS == 1) } - + _tao_ri.reply_status (PortableInterceptor::SUCCESSFUL); _tao_vfr.send_reply (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; @@ -3561,11 +3583,11 @@ ACE_THROW (CORBA::MARSHAL ()); ACE_ENV_ARG_PARAMETER ); ACE_TRY_CHECK; - + PortableInterceptor::ReplyStatus _tao_status = _tao_ri.reply_status (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - + if (_tao_status == PortableInterceptor::SYSTEM_EXCEPTION || _tao_status == PortableInterceptor::USER_EXCEPTION) ACE_RE_THROW; @@ -3573,12 +3595,12 @@ ACE_THROW (CORBA::MARSHAL ()); ACE_ENDTRY; ACE_CHECK; #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_server_request.init_reply (); - + // In case _tao_servant_upcall is not used in this function ACE_UNUSED_ARG (_tao_servant_upcall); - + } void POA_ImplementationRepository::Administration::find_skel ( @@ -3605,39 +3627,39 @@ ACE_THROW (CORBA::MARSHAL ()); #if (TAO_HAS_INTERCEPTORS == 1) TAO_Object_Adapter::Servant_Upcall *_tao_upcall = ACE_static_cast (TAO_Object_Adapter::Servant_Upcall *, _tao_servant_upcall); - + TAO_ServerRequestInterceptor_Adapter _tao_vfr ( _tao_server_request.orb_core ()->server_request_interceptors (), _tao_server_request.interceptor_count () ); - + TAO_ServerRequestInfo_ImplementationRepository_Administration_find _tao_ri ( _tao_server_request, _tao_upcall, _tao_impl, server.in () ACE_ENV_ARG_PARAMETER ); - + ACE_TRY { { TAO_PICurrent_Guard _tao_pi_guard (_tao_ri.server_request (), 1 /* Copy TSC to RSC */); - + _tao_vfr.receive_request (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; - + #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_impl->find ( server.in (), info.out () ACE_ENV_ARG_PARAMETER ); TAO_INTERCEPTOR_CHECK; - + #if (TAO_HAS_INTERCEPTORS == 1) } - + _tao_ri.reply_status (PortableInterceptor::SUCCESSFUL); _tao_vfr.send_reply (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; @@ -3650,11 +3672,11 @@ ACE_THROW (CORBA::MARSHAL ()); ACE_ENV_ARG_PARAMETER ); ACE_TRY_CHECK; - + PortableInterceptor::ReplyStatus _tao_status = _tao_ri.reply_status (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - + if (_tao_status == PortableInterceptor::SYSTEM_EXCEPTION || _tao_status == PortableInterceptor::USER_EXCEPTION) ACE_RE_THROW; @@ -3662,11 +3684,11 @@ ACE_THROW (CORBA::MARSHAL ()); ACE_ENDTRY; ACE_CHECK; #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_server_request.init_reply (); - + TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); - + if (!( (_tao_out << info.in ()) )) @@ -3674,7 +3696,7 @@ ACE_THROW (CORBA::MARSHAL ()); // In case _tao_servant_upcall is not used in this function ACE_UNUSED_ARG (_tao_servant_upcall); - + } void POA_ImplementationRepository::Administration::list_skel ( @@ -3702,41 +3724,41 @@ ACE_THROW (CORBA::MARSHAL ()); #if (TAO_HAS_INTERCEPTORS == 1) TAO_Object_Adapter::Servant_Upcall *_tao_upcall = ACE_static_cast (TAO_Object_Adapter::Servant_Upcall *, _tao_servant_upcall); - + TAO_ServerRequestInterceptor_Adapter _tao_vfr ( _tao_server_request.orb_core ()->server_request_interceptors (), _tao_server_request.interceptor_count () ); - + TAO_ServerRequestInfo_ImplementationRepository_Administration_list _tao_ri ( _tao_server_request, _tao_upcall, _tao_impl, - how_many + how_many ACE_ENV_ARG_PARAMETER ); - + ACE_TRY { { TAO_PICurrent_Guard _tao_pi_guard (_tao_ri.server_request (), 1 /* Copy TSC to RSC */); - + _tao_vfr.receive_request (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; - + #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_impl->list ( how_many, server_list.out (), server_iterator.out () ACE_ENV_ARG_PARAMETER ); TAO_INTERCEPTOR_CHECK; - + #if (TAO_HAS_INTERCEPTORS == 1) } - + _tao_ri.reply_status (PortableInterceptor::SUCCESSFUL); _tao_vfr.send_reply (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; @@ -3749,11 +3771,11 @@ ACE_THROW (CORBA::MARSHAL ()); ACE_ENV_ARG_PARAMETER ); ACE_TRY_CHECK; - + PortableInterceptor::ReplyStatus _tao_status = _tao_ri.reply_status (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - + if (_tao_status == PortableInterceptor::SYSTEM_EXCEPTION || _tao_status == PortableInterceptor::USER_EXCEPTION) ACE_RE_THROW; @@ -3761,11 +3783,11 @@ ACE_THROW (CORBA::MARSHAL ()); ACE_ENDTRY; ACE_CHECK; #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_server_request.init_reply (); - + TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); - + if (!( (_tao_out << server_list.in ()) && (_tao_out << server_iterator.in ()) @@ -3774,11 +3796,11 @@ ACE_THROW (CORBA::MARSHAL ()); // In case _tao_servant_upcall is not used in this function ACE_UNUSED_ARG (_tao_servant_upcall); - + } void POA_ImplementationRepository::Administration::_is_a_skel ( - TAO_ServerRequest &_tao_server_request, + TAO_ServerRequest &_tao_server_request, void * _tao_object_reference, void * /* Servant_Upcall */ ACE_ENV_ARG_DECL @@ -3790,10 +3812,10 @@ void POA_ImplementationRepository::Administration::_is_a_skel ( CORBA::String_var value; if (!(_tao_in >> value.out ())) ACE_THROW (CORBA::MARSHAL ()); - + _tao_retval = _tao_impl->_is_a (value.in () ACE_ENV_ARG_PARAMETER); ACE_CHECK; - + _tao_server_request.init_reply (); TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); if (!(_tao_out << CORBA::Any::from_boolean (_tao_retval))) @@ -3801,7 +3823,7 @@ void POA_ImplementationRepository::Administration::_is_a_skel ( } void POA_ImplementationRepository::Administration::_non_existent_skel ( - TAO_ServerRequest &_tao_server_request, + TAO_ServerRequest &_tao_server_request, void * _tao_object_reference, void * /* Servant_Upcall */ ACE_ENV_ARG_DECL @@ -3811,7 +3833,7 @@ void POA_ImplementationRepository::Administration::_non_existent_skel ( CORBA::Boolean _tao_retval = _tao_impl->_non_existent (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK; - + _tao_server_request.init_reply (); TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); if (!(_tao_out << CORBA::Any::from_boolean (_tao_retval))) @@ -3819,7 +3841,7 @@ void POA_ImplementationRepository::Administration::_non_existent_skel ( } void POA_ImplementationRepository::Administration::_interface_skel ( - TAO_ServerRequest &_tao_server_request, + TAO_ServerRequest &_tao_server_request, void * _tao_object_reference, void * /* Servant_Upcall */ ACE_ENV_ARG_DECL @@ -3828,27 +3850,27 @@ void POA_ImplementationRepository::Administration::_interface_skel ( POA_ImplementationRepository::Administration *_tao_impl = (POA_ImplementationRepository::Administration *) _tao_object_reference; CORBA_InterfaceDef_ptr _tao_retval = 0; CORBA::Boolean _tao_result = 0; - + TAO_IFR_Client_Adapter *_tao_adapter = ACE_Dynamic_Service<TAO_IFR_Client_Adapter>::instance ( TAO_ORB_Core::ifr_client_adapter_name () ); - + if (_tao_adapter == 0) { ACE_THROW (CORBA::INTF_REPOS ()); } - + ACE_TRY { - _tao_retval = + _tao_retval = _tao_impl->_get_interface (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - + _tao_server_request.init_reply (); - + TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); - + _tao_result = _tao_adapter->interfacedef_cdr_insert ( _tao_out, @@ -3860,7 +3882,7 @@ void POA_ImplementationRepository::Administration::_interface_skel ( _tao_adapter->dispose (_tao_retval); } ACE_ENDTRY; - + if (_tao_result == 0) { ACE_THROW (CORBA::MARSHAL ()); @@ -3915,20 +3937,20 @@ POA_ImplementationRepository::Administration::_this (ACE_ENV_SINGLE_ARG_DECL) { TAO_Stub *stub = this->_create_stub (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + TAO_Stub_Auto_Ptr safe_stub (stub); - + CORBA::Object_ptr tmp = CORBA::Object::_nil (); - + if (stub->servant_orb_var ()->orb_core ()->optimize_collocation_objects ()) ACE_NEW_RETURN (tmp, CORBA::Object (stub, 1, this), 0); else ACE_NEW_RETURN (tmp, CORBA::Object (stub, 0, this), 0); - + CORBA::Object_var obj = tmp; - + (void) safe_stub.release (); - + return ::ImplementationRepository::Administration::_unchecked_narrow (obj.in ()); } @@ -4013,8 +4035,8 @@ TAO_ImplementationRepository_ServerInformationIterator_Perfect_Hash_OpTable::loo { {"",0},{"",0},{"",0},{"",0},{"",0}, {"_is_a", &POA_ImplementationRepository::ServerInformationIterator::_is_a_skel}, - {"next_n", &POA_ImplementationRepository::ServerInformationIterator::next_n_skel}, - {"destroy", &POA_ImplementationRepository::ServerInformationIterator::destroy_skel}, + {"next_n", &POA_ImplementationRepository::ServerInformationIterator::next_n_skel}, + {"destroy", &POA_ImplementationRepository::ServerInformationIterator::destroy_skel}, {"",0},{"",0}, {"_interface", &POA_ImplementationRepository::ServerInformationIterator::_interface_skel}, {"",0},{"",0}, @@ -4053,21 +4075,21 @@ public: ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual Dynamic::ExceptionList * exceptions ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Any * result ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual char * target_most_derived_interface ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Boolean target_is_a ( const char * id ACE_ENV_ARG_DECL_WITH_DEFAULTS) @@ -4078,7 +4100,7 @@ public: private: TAO_ServerRequestInfo_ImplementationRepository_ServerInformationIterator_next_n (const TAO_ServerRequestInfo_ImplementationRepository_ServerInformationIterator_next_n &); void operator= (const TAO_ServerRequestInfo_ImplementationRepository_ServerInformationIterator_next_n &); - + private: POA_ImplementationRepository::ServerInformationIterator *_tao_impl; const CORBA::ULong & how_many_; @@ -4104,16 +4126,16 @@ TAO_ServerRequestInfo_ImplementationRepository_ServerInformationIterator_next_n: Dynamic::ParameterList *parameter_list = TAO_RequestInfo_Util::make_parameter_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + Dynamic::ParameterList_var safe_parameter_list = parameter_list; - + parameter_list->length (1); CORBA::ULong len = 0; - + (*parameter_list)[len].argument <<= how_many_; (*parameter_list)[len].mode = CORBA::PARAM_IN; len++; - + return safe_parameter_list._retn (); } @@ -4125,12 +4147,12 @@ TAO_ServerRequestInfo_ImplementationRepository_ServerInformationIterator_next_n: Dynamic::ExceptionList *exception_list = TAO_RequestInfo_Util::make_exception_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return exception_list; } -CORBA::Any * +CORBA::Any * TAO_ServerRequestInfo_ImplementationRepository_ServerInformationIterator_next_n::result (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { @@ -4139,11 +4161,11 @@ TAO_ServerRequestInfo_ImplementationRepository_ServerInformationIterator_next_n: CORBA::Any *result_any = TAO_RequestInfo_Util::make_any (tk_void_any ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + CORBA::Any_var safe_result_any = result_any; - + (*result_any) <<= CORBA::Any::from_boolean (this->_result); - + return safe_result_any._retn (); } @@ -4165,7 +4187,7 @@ TAO_ServerRequestInfo_ImplementationRepository_ServerInformationIterator_next_n: return this->_tao_impl->_is_a (id ACE_ENV_ARG_PARAMETER); } -void +void TAO_ServerRequestInfo_ImplementationRepository_ServerInformationIterator_next_n::result (CORBA::Boolean result) { // Update the result. @@ -4185,34 +4207,34 @@ public: ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual Dynamic::ExceptionList * exceptions ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Any * result ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual char * target_most_derived_interface ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Boolean target_is_a ( const char * id ACE_ENV_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + private: TAO_ServerRequestInfo_ImplementationRepository_ServerInformationIterator_destroy (const TAO_ServerRequestInfo_ImplementationRepository_ServerInformationIterator_destroy &); void operator= (const TAO_ServerRequestInfo_ImplementationRepository_ServerInformationIterator_destroy &); - + private: POA_ImplementationRepository::ServerInformationIterator *_tao_impl; - + }; TAO_ServerRequestInfo_ImplementationRepository_ServerInformationIterator_destroy::TAO_ServerRequestInfo_ImplementationRepository_ServerInformationIterator_destroy ( @@ -4232,7 +4254,7 @@ TAO_ServerRequestInfo_ImplementationRepository_ServerInformationIterator_destroy Dynamic::ParameterList *parameter_list = TAO_RequestInfo_Util::make_parameter_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return parameter_list; } @@ -4244,12 +4266,12 @@ TAO_ServerRequestInfo_ImplementationRepository_ServerInformationIterator_destroy Dynamic::ExceptionList *exception_list = TAO_RequestInfo_Util::make_exception_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return exception_list; } -CORBA::Any * +CORBA::Any * TAO_ServerRequestInfo_ImplementationRepository_ServerInformationIterator_destroy::result (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { @@ -4258,7 +4280,7 @@ TAO_ServerRequestInfo_ImplementationRepository_ServerInformationIterator_destroy CORBA::Any *result_any = TAO_RequestInfo_Util::make_any (tk_void_any ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return result_any; } @@ -4297,14 +4319,14 @@ POA_ImplementationRepository::_TAO_ServerInformationIterator_Strategized_Proxy_B { for (int i = 0; i < TAO_Collocation_Strategies::CS_LAST; ++i) this->proxy_cache_[i] = 0; - + } POA_ImplementationRepository::_TAO_ServerInformationIterator_Strategized_Proxy_Broker::~_TAO_ServerInformationIterator_Strategized_Proxy_Broker (void) { for (int i = 0; i < TAO_Collocation_Strategies::CS_LAST; ++i) delete this->proxy_cache_[i]; - + } ImplementationRepository::_TAO_ServerInformationIterator_Proxy_Impl& @@ -4316,25 +4338,25 @@ POA_ImplementationRepository::_TAO_ServerInformationIterator_Strategized_Proxy_B int strategy = TAO_ORB_Core::collocation_strategy (object ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (*this->proxy_cache_[strategy]); - + if (this->proxy_cache_[strategy] != 0) return *this->proxy_cache_[strategy]; - + this->create_proxy (strategy ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (*this->proxy_cache_[strategy]); - + return *this->proxy_cache_[strategy]; - + } -void +void POA_ImplementationRepository::_TAO_ServerInformationIterator_Strategized_Proxy_Broker::create_proxy ( int strategy ACE_ENV_ARG_DECL ) { ACE_GUARD (TAO_SYNCH_MUTEX, guard, this->mutex_); - + if (this->proxy_cache_[strategy] == 0) { switch (strategy) @@ -4347,7 +4369,7 @@ POA_ImplementationRepository::_TAO_ServerInformationIterator_Strategized_Proxy_B ); ACE_CHECK; break; - + case TAO_Collocation_Strategies::CS_DIRECT_STRATEGY: ACE_NEW_THROW_EX ( this->proxy_cache_[strategy], @@ -4356,7 +4378,7 @@ POA_ImplementationRepository::_TAO_ServerInformationIterator_Strategized_Proxy_B ); ACE_CHECK; break; - + case TAO_Collocation_Strategies::CS_REMOTE_STRATEGY: default: ACE_NEW_THROW_EX ( @@ -4366,9 +4388,9 @@ POA_ImplementationRepository::_TAO_ServerInformationIterator_Strategized_Proxy_B ); ACE_CHECK; break; - + } - + } } @@ -4388,13 +4410,13 @@ ImplementationRepository__TAO_ServerInformationIterator_Proxy_Broker_Factory_fun int ImplementationRepository__TAO_ServerInformationIterator_Proxy_Broker_Factory_Initializer (long) { - ImplementationRepository__TAO_ServerInformationIterator_Proxy_Broker_Factory_function_pointer = + ImplementationRepository__TAO_ServerInformationIterator_Proxy_Broker_Factory_function_pointer = ImplementationRepository__TAO_ServerInformationIterator_Proxy_Broker_Factory_function; - + return 0; } -static int ImplementationRepository__TAO_ServerInformationIterator_Proxy_Broker_Stub_Factory_Initializer_Scarecrow = +static int ImplementationRepository__TAO_ServerInformationIterator_Proxy_Broker_Stub_Factory_Initializer_Scarecrow = ImplementationRepository__TAO_ServerInformationIterator_Proxy_Broker_Factory_Initializer (ACE_reinterpret_cast (long, ImplementationRepository__TAO_ServerInformationIterator_Proxy_Broker_Factory_Initializer)); @@ -4429,7 +4451,9 @@ CORBA::Boolean POA_ImplementationRepository::_TAO_ServerInformationIterator_Thru forward_to.out () ACE_ENV_ARG_PARAMETER ); - ACE_CHECK_RETURN (_tao_retval); + ACE_CHECK_RETURN (_tao_retval); + servant_upcall.pre_invoke_collocated_request (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN (_tao_retval); return ACE_reinterpret_cast ( POA_ImplementationRepository::ServerInformationIterator_ptr, servant_upcall.servant ()->_downcast ( @@ -4459,7 +4483,9 @@ void POA_ImplementationRepository::_TAO_ServerInformationIterator_ThruPOA_Proxy_ forward_to.out () ACE_ENV_ARG_PARAMETER ); - ACE_CHECK; + ACE_CHECK; + servant_upcall.pre_invoke_collocated_request (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; ACE_reinterpret_cast ( POA_ImplementationRepository::ServerInformationIterator_ptr, servant_upcall.servant ()->_downcast ( @@ -4500,7 +4526,7 @@ CORBA::Boolean POA_ImplementationRepository::_TAO_ServerInformationIterator_Dire how_many, server_list ACE_ENV_ARG_PARAMETER ); - + } void POA_ImplementationRepository::_TAO_ServerInformationIterator_Direct_Proxy_Impl::destroy ( @@ -4517,14 +4543,14 @@ void POA_ImplementationRepository::_TAO_ServerInformationIterator_Direct_Proxy_I )->destroy ( ACE_ENV_SINGLE_ARG_PARAMETER ); - + } // // End Direct Proxy Implementation /////////////////////////////////////////////////////////////////////// -// TAO_IDL - Generated from +// TAO_IDL - Generated from // be/be_visitor_interface/interface_ss.cpp:100 POA_ImplementationRepository::ServerInformationIterator::ServerInformationIterator (void) { @@ -4564,39 +4590,39 @@ ACE_THROW (CORBA::MARSHAL ()); #if (TAO_HAS_INTERCEPTORS == 1) TAO_Object_Adapter::Servant_Upcall *_tao_upcall = ACE_static_cast (TAO_Object_Adapter::Servant_Upcall *, _tao_servant_upcall); - + TAO_ServerRequestInterceptor_Adapter _tao_vfr ( _tao_server_request.orb_core ()->server_request_interceptors (), _tao_server_request.interceptor_count () ); - + TAO_ServerRequestInfo_ImplementationRepository_ServerInformationIterator_next_n _tao_ri ( _tao_server_request, _tao_upcall, _tao_impl, how_many ACE_ENV_ARG_PARAMETER ); - + ACE_TRY { { TAO_PICurrent_Guard _tao_pi_guard (_tao_ri.server_request (), 1 /* Copy TSC to RSC */); - + _tao_vfr.receive_request (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; - + #endif /* TAO_HAS_INTERCEPTORS */ - _tao_retval = + _tao_retval = _tao_impl->next_n ( how_many, server_list.out () ACE_ENV_ARG_PARAMETER ); TAO_INTERCEPTOR_CHECK; - + #if (TAO_HAS_INTERCEPTORS == 1) } - + CORBA::Boolean _tao_retval_info = _tao_retval; _tao_ri.result (_tao_retval_info); _tao_ri.reply_status (PortableInterceptor::SUCCESSFUL); @@ -4611,11 +4637,11 @@ ACE_THROW (CORBA::MARSHAL ()); ACE_ENV_ARG_PARAMETER ); ACE_TRY_CHECK; - + PortableInterceptor::ReplyStatus _tao_status = _tao_ri.reply_status (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - + if (_tao_status == PortableInterceptor::SYSTEM_EXCEPTION || _tao_status == PortableInterceptor::USER_EXCEPTION) ACE_RE_THROW; @@ -4623,11 +4649,11 @@ ACE_THROW (CORBA::MARSHAL ()); ACE_ENDTRY; ACE_CHECK; #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_server_request.init_reply (); - + TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); - + if (!( (_tao_out << CORBA::Any::from_boolean (_tao_retval)) && (_tao_out << server_list.in ()) @@ -4636,7 +4662,7 @@ ACE_THROW (CORBA::MARSHAL ()); // In case _tao_servant_upcall is not used in this function ACE_UNUSED_ARG (_tao_servant_upcall); - + } void POA_ImplementationRepository::ServerInformationIterator::destroy_skel ( @@ -4652,41 +4678,41 @@ void POA_ImplementationRepository::ServerInformationIterator::destroy_skel ( _tao_object_reference ); _tao_server_request.argument_flag (0); - + #if (TAO_HAS_INTERCEPTORS == 1) TAO_Object_Adapter::Servant_Upcall *_tao_upcall = ACE_static_cast (TAO_Object_Adapter::Servant_Upcall *, _tao_servant_upcall); - + TAO_ServerRequestInterceptor_Adapter _tao_vfr ( _tao_server_request.orb_core ()->server_request_interceptors (), _tao_server_request.interceptor_count () ); - + TAO_ServerRequestInfo_ImplementationRepository_ServerInformationIterator_destroy _tao_ri ( _tao_server_request, _tao_upcall, _tao_impl ACE_ENV_ARG_PARAMETER ); - + ACE_TRY { { TAO_PICurrent_Guard _tao_pi_guard (_tao_ri.server_request (), 1 /* Copy TSC to RSC */); - + _tao_vfr.receive_request (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; - + #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_impl->destroy ( ACE_ENV_SINGLE_ARG_PARAMETER ); TAO_INTERCEPTOR_CHECK; - + #if (TAO_HAS_INTERCEPTORS == 1) } - + _tao_ri.reply_status (PortableInterceptor::SUCCESSFUL); _tao_vfr.send_reply (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; @@ -4699,11 +4725,11 @@ void POA_ImplementationRepository::ServerInformationIterator::destroy_skel ( ACE_ENV_ARG_PARAMETER ); ACE_TRY_CHECK; - + PortableInterceptor::ReplyStatus _tao_status = _tao_ri.reply_status (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - + if (_tao_status == PortableInterceptor::SYSTEM_EXCEPTION || _tao_status == PortableInterceptor::USER_EXCEPTION) ACE_RE_THROW; @@ -4711,16 +4737,16 @@ void POA_ImplementationRepository::ServerInformationIterator::destroy_skel ( ACE_ENDTRY; ACE_CHECK; #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_server_request.init_reply (); - + // In case _tao_servant_upcall is not used in this function ACE_UNUSED_ARG (_tao_servant_upcall); - + } void POA_ImplementationRepository::ServerInformationIterator::_is_a_skel ( - TAO_ServerRequest &_tao_server_request, + TAO_ServerRequest &_tao_server_request, void * _tao_object_reference, void * /* Servant_Upcall */ ACE_ENV_ARG_DECL @@ -4732,10 +4758,10 @@ void POA_ImplementationRepository::ServerInformationIterator::_is_a_skel ( CORBA::String_var value; if (!(_tao_in >> value.out ())) ACE_THROW (CORBA::MARSHAL ()); - + _tao_retval = _tao_impl->_is_a (value.in () ACE_ENV_ARG_PARAMETER); ACE_CHECK; - + _tao_server_request.init_reply (); TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); if (!(_tao_out << CORBA::Any::from_boolean (_tao_retval))) @@ -4743,7 +4769,7 @@ void POA_ImplementationRepository::ServerInformationIterator::_is_a_skel ( } void POA_ImplementationRepository::ServerInformationIterator::_non_existent_skel ( - TAO_ServerRequest &_tao_server_request, + TAO_ServerRequest &_tao_server_request, void * _tao_object_reference, void * /* Servant_Upcall */ ACE_ENV_ARG_DECL @@ -4753,7 +4779,7 @@ void POA_ImplementationRepository::ServerInformationIterator::_non_existent_skel CORBA::Boolean _tao_retval = _tao_impl->_non_existent (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK; - + _tao_server_request.init_reply (); TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); if (!(_tao_out << CORBA::Any::from_boolean (_tao_retval))) @@ -4761,7 +4787,7 @@ void POA_ImplementationRepository::ServerInformationIterator::_non_existent_skel } void POA_ImplementationRepository::ServerInformationIterator::_interface_skel ( - TAO_ServerRequest &_tao_server_request, + TAO_ServerRequest &_tao_server_request, void * _tao_object_reference, void * /* Servant_Upcall */ ACE_ENV_ARG_DECL @@ -4770,27 +4796,27 @@ void POA_ImplementationRepository::ServerInformationIterator::_interface_skel ( POA_ImplementationRepository::ServerInformationIterator *_tao_impl = (POA_ImplementationRepository::ServerInformationIterator *) _tao_object_reference; CORBA_InterfaceDef_ptr _tao_retval = 0; CORBA::Boolean _tao_result = 0; - + TAO_IFR_Client_Adapter *_tao_adapter = ACE_Dynamic_Service<TAO_IFR_Client_Adapter>::instance ( TAO_ORB_Core::ifr_client_adapter_name () ); - + if (_tao_adapter == 0) { ACE_THROW (CORBA::INTF_REPOS ()); } - + ACE_TRY { - _tao_retval = + _tao_retval = _tao_impl->_get_interface (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - + _tao_server_request.init_reply (); - + TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); - + _tao_result = _tao_adapter->interfacedef_cdr_insert ( _tao_out, @@ -4802,7 +4828,7 @@ void POA_ImplementationRepository::ServerInformationIterator::_interface_skel ( _tao_adapter->dispose (_tao_retval); } ACE_ENDTRY; - + if (_tao_result == 0) { ACE_THROW (CORBA::MARSHAL ()); @@ -4857,20 +4883,20 @@ POA_ImplementationRepository::ServerInformationIterator::_this (ACE_ENV_SINGLE_A { TAO_Stub *stub = this->_create_stub (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + TAO_Stub_Auto_Ptr safe_stub (stub); - + CORBA::Object_ptr tmp = CORBA::Object::_nil (); - + if (stub->servant_orb_var ()->orb_core ()->optimize_collocation_objects ()) ACE_NEW_RETURN (tmp, CORBA::Object (stub, 1, this), 0); else ACE_NEW_RETURN (tmp, CORBA::Object (stub, 0, this), 0); - + CORBA::Object_var obj = tmp; - + (void) safe_stub.release (); - + return ::ImplementationRepository::ServerInformationIterator::_unchecked_narrow (obj.in ()); } diff --git a/TAO/tao/PortableServer/Object_Adapter.cpp b/TAO/tao/PortableServer/Object_Adapter.cpp index c31f8486bf0..b9aa2ec8bb2 100644 --- a/TAO/tao/PortableServer/Object_Adapter.cpp +++ b/TAO/tao/PortableServer/Object_Adapter.cpp @@ -316,13 +316,18 @@ TAO_Object_Adapter::dispatch_servant (const TAO_ObjectKey &key, if (result != TAO_Adapter::DS_OK) return result; + // Preprocess remote request. + servant_upcall.pre_invoke_remote_request (req + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (result); + // Servant dispatch. { ACE_FUNCTION_TIMEPROBE (TAO_SERVANT_DISPATCH_START); - this->servant_dispatcher_->dispatch (servant_upcall, - req - ACE_ENV_ARG_PARAMETER); + servant_upcall.servant ()->_dispatch (req, + &servant_upcall + ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (result); } @@ -1269,6 +1274,43 @@ TAO_Object_Adapter::Servant_Upcall::prepare_for_upcall (const TAO_ObjectKey &key return TAO_Adapter::DS_OK; } +void +TAO_Object_Adapter::Servant_Upcall::pre_invoke_remote_request (TAO_ServerRequest &req + ACE_ENV_ARG_DECL) +{ + this->object_adapter_->servant_dispatcher_->pre_invoke_remote_request (this->poa (), + this->priority (), + req.request_service_context (), + req.reply_service_context (), + this->pre_invoke_state_ + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + +void +TAO_Object_Adapter::Servant_Upcall::pre_invoke_collocated_request (ACE_ENV_SINGLE_ARG_DECL) +{ + this->object_adapter_->servant_dispatcher_->pre_invoke_collocated_request (this->poa (), + this->priority (), + this->pre_invoke_state_ + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + +void +TAO_Object_Adapter::Servant_Upcall::post_invoke (void) +{ + this->object_adapter_->servant_dispatcher_->post_invoke (this->poa (), + this->pre_invoke_state_); +} + +TAO_Object_Adapter::Servant_Upcall::Pre_Invoke_State::Pre_Invoke_State (void) + : state_ (NO_ACTION_REQUIRED), + original_native_priority_ (0), + original_CORBA_priority_ (0) +{ +} + TAO_POA * TAO_Object_Adapter::Servant_Upcall::lookup_POA (const TAO_ObjectKey &key ACE_ENV_ARG_DECL) @@ -1302,6 +1344,8 @@ TAO_Object_Adapter::Servant_Upcall::lookup_POA (const TAO_ObjectKey &key TAO_Object_Adapter::Servant_Upcall::~Servant_Upcall () { + this->post_invoke (); + switch (this->state_) { case SERVANT_LOCK_ACQUIRED: diff --git a/TAO/tao/PortableServer/Object_Adapter.h b/TAO/tao/PortableServer/Object_Adapter.h index f2e9d609fb1..7febfca8569 100644 --- a/TAO/tao/PortableServer/Object_Adapter.h +++ b/TAO/tao/PortableServer/Object_Adapter.h @@ -624,6 +624,32 @@ public: friend class TAO_POA; friend class TAO_RT_Collocation_Resolver; + class Pre_Invoke_State + { + // = TITLE + // This struct keeps track of state related to pre- and + // post-invoke operations. + public: + // Constructor. + Pre_Invoke_State (void); + + enum State + { + NO_ACTION_REQUIRED, + PRIORITY_RESET_REQUIRED + }; + + // Indicates whether the priority of the thread needs to be + // reset back to its original value. + State state_; + + // Original native priority of the thread. + CORBA::Short original_native_priority_; + + // Original CORBA priority of the thread. + CORBA::Short original_CORBA_priority_; + }; + // @@ PPOA: Servant_Upcall (TAO_Object_Adapter &object_adapter); Servant_Upcall (TAO_ORB_Core *orb_core); // Constructor. @@ -637,6 +663,16 @@ public: ACE_ENV_ARG_DECL_WITH_DEFAULTS); // Locate POA and servant. + void pre_invoke_remote_request (TAO_ServerRequest &req + ACE_ENV_ARG_DECL); + // Run pre_invoke for a remote request. + + void pre_invoke_collocated_request (ACE_ENV_SINGLE_ARG_DECL); + // Run pre_invoke for a collocated request. + + void post_invoke (void); + // Run post_invoke for a request. + TAO_POA *lookup_POA (const TAO_ObjectKey &key ACE_ENV_ARG_DECL); // Locate POA. @@ -734,6 +770,9 @@ public: int using_servant_locator_; // Are we using the servant locator? + Pre_Invoke_State pre_invoke_state_; + // Preinvoke data for the upcall. + private: Servant_Upcall (const Servant_Upcall &); void operator= (const Servant_Upcall &); diff --git a/TAO/tao/PortableServer/PolicyS.cpp b/TAO/tao/PortableServer/PolicyS.cpp index 226f11bc1be..4f012c33cde 100644 --- a/TAO/tao/PortableServer/PolicyS.cpp +++ b/TAO/tao/PortableServer/PolicyS.cpp @@ -127,16 +127,16 @@ TAO_CORBA_Policy_Perfect_Hash_OpTable::lookup (const char *str, unsigned int len static const class TAO_operation_db_entry wordlist[] = { {"",0},{"",0},{"",0},{"",0}, - {"copy", &POA_CORBA::Policy::copy_skel}, + {"copy", &POA_CORBA::Policy::copy_skel}, {"_is_a", &POA_CORBA::Policy::_is_a_skel}, {"",0}, - {"destroy", &POA_CORBA::Policy::destroy_skel}, + {"destroy", &POA_CORBA::Policy::destroy_skel}, {"",0},{"",0}, {"_interface", &POA_CORBA::Policy::_interface_skel}, {"",0},{"",0}, {"_non_existent", &POA_CORBA::Policy::_non_existent_skel}, {"",0},{"",0}, - {"_get_policy_type", &POA_CORBA::Policy::_get_policy_type_skel}, + {"_get_policy_type", &POA_CORBA::Policy::_get_policy_type_skel}, }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) @@ -170,21 +170,21 @@ public: ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual Dynamic::ExceptionList * exceptions ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Any * result ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual char * target_most_derived_interface ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Boolean target_is_a ( const char * id ACE_ENV_ARG_DECL_WITH_DEFAULTS) @@ -195,7 +195,7 @@ public: private: TAO_ServerRequestInfo_CORBA_Policy_policy_type_get (const TAO_ServerRequestInfo_CORBA_Policy_policy_type_get &); void operator= (const TAO_ServerRequestInfo_CORBA_Policy_policy_type_get &); - + private: POA_CORBA::Policy *_tao_impl; CORBA::PolicyType _result; @@ -218,7 +218,7 @@ TAO_ServerRequestInfo_CORBA_Policy_policy_type_get::arguments (ACE_ENV_SINGLE_AR Dynamic::ParameterList *parameter_list = TAO_RequestInfo_Util::make_parameter_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return parameter_list; } @@ -230,12 +230,12 @@ TAO_ServerRequestInfo_CORBA_Policy_policy_type_get::exceptions (ACE_ENV_SINGLE_A Dynamic::ExceptionList *exception_list = TAO_RequestInfo_Util::make_exception_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return exception_list; } -CORBA::Any * +CORBA::Any * TAO_ServerRequestInfo_CORBA_Policy_policy_type_get::result (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { @@ -244,11 +244,11 @@ TAO_ServerRequestInfo_CORBA_Policy_policy_type_get::result (ACE_ENV_SINGLE_ARG_D CORBA::Any *result_any = TAO_RequestInfo_Util::make_any (tk_void_any ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + CORBA::Any_var safe_result_any = result_any; - + (*result_any) <<= this->_result; - + return safe_result_any._retn (); } @@ -270,7 +270,7 @@ TAO_ServerRequestInfo_CORBA_Policy_policy_type_get::target_is_a ( return this->_tao_impl->_is_a (id ACE_ENV_ARG_PARAMETER); } -void +void TAO_ServerRequestInfo_CORBA_Policy_policy_type_get::result (CORBA::PolicyType result) { // Update the result. @@ -290,21 +290,21 @@ public: ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual Dynamic::ExceptionList * exceptions ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Any * result ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual char * target_most_derived_interface ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Boolean target_is_a ( const char * id ACE_ENV_ARG_DECL_WITH_DEFAULTS) @@ -315,7 +315,7 @@ public: private: TAO_ServerRequestInfo_CORBA_Policy_copy (const TAO_ServerRequestInfo_CORBA_Policy_copy &); void operator= (const TAO_ServerRequestInfo_CORBA_Policy_copy &); - + private: POA_CORBA::Policy *_tao_impl; ::CORBA::Policy_ptr _result; @@ -338,7 +338,7 @@ TAO_ServerRequestInfo_CORBA_Policy_copy::arguments (ACE_ENV_SINGLE_ARG_DECL) Dynamic::ParameterList *parameter_list = TAO_RequestInfo_Util::make_parameter_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return parameter_list; } @@ -350,12 +350,12 @@ TAO_ServerRequestInfo_CORBA_Policy_copy::exceptions (ACE_ENV_SINGLE_ARG_DECL) Dynamic::ExceptionList *exception_list = TAO_RequestInfo_Util::make_exception_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return exception_list; } -CORBA::Any * +CORBA::Any * TAO_ServerRequestInfo_CORBA_Policy_copy::result (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { @@ -364,11 +364,11 @@ TAO_ServerRequestInfo_CORBA_Policy_copy::result (ACE_ENV_SINGLE_ARG_DECL) CORBA::Any *result_any = TAO_RequestInfo_Util::make_any (tk_void_any ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + CORBA::Any_var safe_result_any = result_any; - + (*result_any) <<= this->_result; - + return safe_result_any._retn (); } @@ -390,7 +390,7 @@ TAO_ServerRequestInfo_CORBA_Policy_copy::target_is_a ( return this->_tao_impl->_is_a (id ACE_ENV_ARG_PARAMETER); } -void +void TAO_ServerRequestInfo_CORBA_Policy_copy::result (::CORBA::Policy_ptr result) { // Update the result. @@ -410,34 +410,34 @@ public: ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual Dynamic::ExceptionList * exceptions ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Any * result ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual char * target_most_derived_interface ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + virtual CORBA::Boolean target_is_a ( const char * id ACE_ENV_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + private: TAO_ServerRequestInfo_CORBA_Policy_destroy (const TAO_ServerRequestInfo_CORBA_Policy_destroy &); void operator= (const TAO_ServerRequestInfo_CORBA_Policy_destroy &); - + private: POA_CORBA::Policy *_tao_impl; - + }; TAO_ServerRequestInfo_CORBA_Policy_destroy::TAO_ServerRequestInfo_CORBA_Policy_destroy ( @@ -457,7 +457,7 @@ TAO_ServerRequestInfo_CORBA_Policy_destroy::arguments (ACE_ENV_SINGLE_ARG_DECL) Dynamic::ParameterList *parameter_list = TAO_RequestInfo_Util::make_parameter_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return parameter_list; } @@ -469,12 +469,12 @@ TAO_ServerRequestInfo_CORBA_Policy_destroy::exceptions (ACE_ENV_SINGLE_ARG_DECL) Dynamic::ExceptionList *exception_list = TAO_RequestInfo_Util::make_exception_list (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return exception_list; } -CORBA::Any * +CORBA::Any * TAO_ServerRequestInfo_CORBA_Policy_destroy::result (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { @@ -483,7 +483,7 @@ TAO_ServerRequestInfo_CORBA_Policy_destroy::result (ACE_ENV_SINGLE_ARG_DECL) CORBA::Any *result_any = TAO_RequestInfo_Util::make_any (tk_void_any ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + return result_any; } @@ -522,14 +522,14 @@ POA_CORBA::_TAO_Policy_Strategized_Proxy_Broker::_TAO_Policy_Strategized_Proxy_B { for (int i = 0; i < TAO_Collocation_Strategies::CS_LAST; ++i) this->proxy_cache_[i] = 0; - + } POA_CORBA::_TAO_Policy_Strategized_Proxy_Broker::~_TAO_Policy_Strategized_Proxy_Broker (void) { for (int i = 0; i < TAO_Collocation_Strategies::CS_LAST; ++i) delete this->proxy_cache_[i]; - + } CORBA::_TAO_Policy_Proxy_Impl& @@ -541,25 +541,25 @@ POA_CORBA::_TAO_Policy_Strategized_Proxy_Broker::select_proxy ( int strategy = TAO_ORB_Core::collocation_strategy (object ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (*this->proxy_cache_[strategy]); - + if (this->proxy_cache_[strategy] != 0) return *this->proxy_cache_[strategy]; - + this->create_proxy (strategy ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (*this->proxy_cache_[strategy]); - + return *this->proxy_cache_[strategy]; - + } -void +void POA_CORBA::_TAO_Policy_Strategized_Proxy_Broker::create_proxy ( int strategy ACE_ENV_ARG_DECL ) { ACE_GUARD (TAO_SYNCH_MUTEX, guard, this->mutex_); - + if (this->proxy_cache_[strategy] == 0) { switch (strategy) @@ -572,7 +572,7 @@ POA_CORBA::_TAO_Policy_Strategized_Proxy_Broker::create_proxy ( ); ACE_CHECK; break; - + case TAO_Collocation_Strategies::CS_DIRECT_STRATEGY: ACE_NEW_THROW_EX ( this->proxy_cache_[strategy], @@ -581,7 +581,7 @@ POA_CORBA::_TAO_Policy_Strategized_Proxy_Broker::create_proxy ( ); ACE_CHECK; break; - + case TAO_Collocation_Strategies::CS_REMOTE_STRATEGY: default: ACE_NEW_THROW_EX ( @@ -591,9 +591,9 @@ POA_CORBA::_TAO_Policy_Strategized_Proxy_Broker::create_proxy ( ); ACE_CHECK; break; - + } - + } } @@ -613,13 +613,13 @@ CORBA__TAO_Policy_Proxy_Broker_Factory_function (CORBA::Object_ptr obj) int CORBA__TAO_Policy_Proxy_Broker_Factory_Initializer (long) { - CORBA__TAO_Policy_Proxy_Broker_Factory_function_pointer = + CORBA__TAO_Policy_Proxy_Broker_Factory_function_pointer = CORBA__TAO_Policy_Proxy_Broker_Factory_function; - + return 0; } -static int CORBA__TAO_Policy_Proxy_Broker_Stub_Factory_Initializer_Scarecrow = +static int CORBA__TAO_Policy_Proxy_Broker_Stub_Factory_Initializer_Scarecrow = CORBA__TAO_Policy_Proxy_Broker_Factory_Initializer (ACE_reinterpret_cast (long, CORBA__TAO_Policy_Proxy_Broker_Factory_Initializer)); @@ -652,7 +652,9 @@ CORBA::PolicyType POA_CORBA::_TAO_Policy_ThruPOA_Proxy_Impl::policy_type ( forward_to.out () ACE_ENV_ARG_PARAMETER ); - ACE_CHECK_RETURN (_tao_retval); + ACE_CHECK_RETURN (_tao_retval); + servant_upcall.pre_invoke_collocated_request (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN (_tao_retval); return ACE_reinterpret_cast ( POA_CORBA::Policy_ptr, servant_upcall.servant ()->_downcast ( @@ -683,7 +685,9 @@ CORBA::PolicyType POA_CORBA::_TAO_Policy_ThruPOA_Proxy_Impl::policy_type ( forward_to.out () ACE_ENV_ARG_PARAMETER ); - ACE_CHECK_RETURN (_tao_retval._retn ()); + ACE_CHECK_RETURN (_tao_retval._retn ()); + servant_upcall.pre_invoke_collocated_request (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN (_tao_retval._retn ()); return ACE_reinterpret_cast ( POA_CORBA::Policy_ptr, servant_upcall.servant ()->_downcast ( @@ -712,7 +716,9 @@ void POA_CORBA::_TAO_Policy_ThruPOA_Proxy_Impl::destroy ( forward_to.out () ACE_ENV_ARG_PARAMETER ); - ACE_CHECK; + ACE_CHECK; + servant_upcall.pre_invoke_collocated_request (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; ACE_reinterpret_cast ( POA_CORBA::Policy_ptr, servant_upcall.servant ()->_downcast ( @@ -750,7 +756,7 @@ CORBA::PolicyType POA_CORBA::_TAO_Policy_Direct_Proxy_Impl::policy_type ( )->policy_type ( ACE_ENV_SINGLE_ARG_PARAMETER ); - + } ::CORBA::Policy_ptr POA_CORBA::_TAO_Policy_Direct_Proxy_Impl::copy ( @@ -767,7 +773,7 @@ CORBA::PolicyType POA_CORBA::_TAO_Policy_Direct_Proxy_Impl::policy_type ( )->copy ( ACE_ENV_SINGLE_ARG_PARAMETER ); - + } void POA_CORBA::_TAO_Policy_Direct_Proxy_Impl::destroy ( @@ -784,14 +790,14 @@ void POA_CORBA::_TAO_Policy_Direct_Proxy_Impl::destroy ( )->destroy ( ACE_ENV_SINGLE_ARG_PARAMETER ); - + } // // End Direct Proxy Implementation /////////////////////////////////////////////////////////////////////// -// TAO_IDL - Generated from +// TAO_IDL - Generated from // be/be_visitor_interface/interface_ss.cpp:100 POA_CORBA::Policy::Policy (void) { @@ -823,37 +829,37 @@ void POA_CORBA::Policy::_get_policy_type_skel ( #if (TAO_HAS_INTERCEPTORS == 1) TAO_Object_Adapter::Servant_Upcall *_tao_upcall = ACE_static_cast (TAO_Object_Adapter::Servant_Upcall *, _tao_servant_upcall); - + TAO_ServerRequestInterceptor_Adapter _tao_vfr ( _tao_server_request.orb_core ()->server_request_interceptors (), _tao_server_request.interceptor_count () ); - + TAO_ServerRequestInfo_CORBA_Policy_policy_type_get _tao_ri ( _tao_server_request, _tao_upcall, _tao_impl ACE_ENV_ARG_PARAMETER ); - + ACE_TRY { { TAO_PICurrent_Guard _tao_pi_guard (_tao_ri.server_request (), 1 /* Copy TSC to RSC */); - + _tao_vfr.receive_request (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; - + #endif /* TAO_HAS_INTERCEPTORS */ - _tao_retval = + _tao_retval = _tao_impl->policy_type ( ACE_ENV_SINGLE_ARG_PARAMETER ); TAO_INTERCEPTOR_CHECK; - + #if (TAO_HAS_INTERCEPTORS == 1) } - + CORBA::PolicyType _tao_retval_info = _tao_retval; _tao_ri.result (_tao_retval_info); _tao_ri.reply_status (PortableInterceptor::SUCCESSFUL); @@ -868,11 +874,11 @@ void POA_CORBA::Policy::_get_policy_type_skel ( ACE_ENV_ARG_PARAMETER ); ACE_TRY_CHECK; - + PortableInterceptor::ReplyStatus _tao_status = _tao_ri.reply_status (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - + if (_tao_status == PortableInterceptor::SYSTEM_EXCEPTION || _tao_status == PortableInterceptor::USER_EXCEPTION) ACE_RE_THROW; @@ -880,11 +886,11 @@ void POA_CORBA::Policy::_get_policy_type_skel ( ACE_ENDTRY; ACE_CHECK; #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_server_request.init_reply (); - + TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); - + if (!( (_tao_out << _tao_retval) )) @@ -892,7 +898,7 @@ ACE_THROW (CORBA::MARSHAL ()); // In case _tao_servant_upcall is not used in this function ACE_UNUSED_ARG (_tao_servant_upcall); - + } void POA_CORBA::Policy::copy_skel ( @@ -912,37 +918,37 @@ void POA_CORBA::Policy::copy_skel ( #if (TAO_HAS_INTERCEPTORS == 1) TAO_Object_Adapter::Servant_Upcall *_tao_upcall = ACE_static_cast (TAO_Object_Adapter::Servant_Upcall *, _tao_servant_upcall); - + TAO_ServerRequestInterceptor_Adapter _tao_vfr ( _tao_server_request.orb_core ()->server_request_interceptors (), _tao_server_request.interceptor_count () ); - + TAO_ServerRequestInfo_CORBA_Policy_copy _tao_ri ( _tao_server_request, _tao_upcall, _tao_impl ACE_ENV_ARG_PARAMETER ); - + ACE_TRY { { TAO_PICurrent_Guard _tao_pi_guard (_tao_ri.server_request (), 1 /* Copy TSC to RSC */); - + _tao_vfr.receive_request (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; - + #endif /* TAO_HAS_INTERCEPTORS */ - _tao_retval = + _tao_retval = _tao_impl->copy ( ACE_ENV_SINGLE_ARG_PARAMETER ); TAO_INTERCEPTOR_CHECK; - + #if (TAO_HAS_INTERCEPTORS == 1) } - + ::CORBA::Policy_ptr _tao_retval_info = _tao_retval._retn (); _tao_ri.result (_tao_retval_info); _tao_retval = _tao_retval_info; @@ -958,11 +964,11 @@ void POA_CORBA::Policy::copy_skel ( ACE_ENV_ARG_PARAMETER ); ACE_TRY_CHECK; - + PortableInterceptor::ReplyStatus _tao_status = _tao_ri.reply_status (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - + if (_tao_status == PortableInterceptor::SYSTEM_EXCEPTION || _tao_status == PortableInterceptor::USER_EXCEPTION) ACE_RE_THROW; @@ -970,11 +976,11 @@ void POA_CORBA::Policy::copy_skel ( ACE_ENDTRY; ACE_CHECK; #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_server_request.init_reply (); - + TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); - + if (!( (_tao_out << _tao_retval.in ()) )) @@ -982,7 +988,7 @@ ACE_THROW (CORBA::MARSHAL ()); // In case _tao_servant_upcall is not used in this function ACE_UNUSED_ARG (_tao_servant_upcall); - + } void POA_CORBA::Policy::destroy_skel ( @@ -998,41 +1004,41 @@ void POA_CORBA::Policy::destroy_skel ( _tao_object_reference ); _tao_server_request.argument_flag (0); - + #if (TAO_HAS_INTERCEPTORS == 1) TAO_Object_Adapter::Servant_Upcall *_tao_upcall = ACE_static_cast (TAO_Object_Adapter::Servant_Upcall *, _tao_servant_upcall); - + TAO_ServerRequestInterceptor_Adapter _tao_vfr ( _tao_server_request.orb_core ()->server_request_interceptors (), _tao_server_request.interceptor_count () ); - + TAO_ServerRequestInfo_CORBA_Policy_destroy _tao_ri ( _tao_server_request, _tao_upcall, _tao_impl ACE_ENV_ARG_PARAMETER ); - + ACE_TRY { { TAO_PICurrent_Guard _tao_pi_guard (_tao_ri.server_request (), 1 /* Copy TSC to RSC */); - + _tao_vfr.receive_request (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; - + #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_impl->destroy ( ACE_ENV_SINGLE_ARG_PARAMETER ); TAO_INTERCEPTOR_CHECK; - + #if (TAO_HAS_INTERCEPTORS == 1) } - + _tao_ri.reply_status (PortableInterceptor::SUCCESSFUL); _tao_vfr.send_reply (&_tao_ri ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; @@ -1045,11 +1051,11 @@ void POA_CORBA::Policy::destroy_skel ( ACE_ENV_ARG_PARAMETER ); ACE_TRY_CHECK; - + PortableInterceptor::ReplyStatus _tao_status = _tao_ri.reply_status (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - + if (_tao_status == PortableInterceptor::SYSTEM_EXCEPTION || _tao_status == PortableInterceptor::USER_EXCEPTION) ACE_RE_THROW; @@ -1057,16 +1063,16 @@ void POA_CORBA::Policy::destroy_skel ( ACE_ENDTRY; ACE_CHECK; #endif /* TAO_HAS_INTERCEPTORS */ - + _tao_server_request.init_reply (); - + // In case _tao_servant_upcall is not used in this function ACE_UNUSED_ARG (_tao_servant_upcall); - + } void POA_CORBA::Policy::_is_a_skel ( - TAO_ServerRequest &_tao_server_request, + TAO_ServerRequest &_tao_server_request, void * _tao_object_reference, void * /* Servant_Upcall */ ACE_ENV_ARG_DECL @@ -1078,10 +1084,10 @@ void POA_CORBA::Policy::_is_a_skel ( CORBA::String_var value; if (!(_tao_in >> value.out ())) ACE_THROW (CORBA::MARSHAL ()); - + _tao_retval = _tao_impl->_is_a (value.in () ACE_ENV_ARG_PARAMETER); ACE_CHECK; - + _tao_server_request.init_reply (); TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); if (!(_tao_out << CORBA::Any::from_boolean (_tao_retval))) @@ -1089,7 +1095,7 @@ void POA_CORBA::Policy::_is_a_skel ( } void POA_CORBA::Policy::_non_existent_skel ( - TAO_ServerRequest &_tao_server_request, + TAO_ServerRequest &_tao_server_request, void * _tao_object_reference, void * /* Servant_Upcall */ ACE_ENV_ARG_DECL @@ -1099,7 +1105,7 @@ void POA_CORBA::Policy::_non_existent_skel ( CORBA::Boolean _tao_retval = _tao_impl->_non_existent (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK; - + _tao_server_request.init_reply (); TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); if (!(_tao_out << CORBA::Any::from_boolean (_tao_retval))) @@ -1107,7 +1113,7 @@ void POA_CORBA::Policy::_non_existent_skel ( } void POA_CORBA::Policy::_interface_skel ( - TAO_ServerRequest &_tao_server_request, + TAO_ServerRequest &_tao_server_request, void * _tao_object_reference, void * /* Servant_Upcall */ ACE_ENV_ARG_DECL @@ -1116,27 +1122,27 @@ void POA_CORBA::Policy::_interface_skel ( POA_CORBA::Policy *_tao_impl = (POA_CORBA::Policy *) _tao_object_reference; CORBA_InterfaceDef_ptr _tao_retval = 0; CORBA::Boolean _tao_result = 0; - + TAO_IFR_Client_Adapter *_tao_adapter = ACE_Dynamic_Service<TAO_IFR_Client_Adapter>::instance ( TAO_ORB_Core::ifr_client_adapter_name () ); - + if (_tao_adapter == 0) { ACE_THROW (CORBA::INTF_REPOS ()); } - + ACE_TRY { - _tao_retval = + _tao_retval = _tao_impl->_get_interface (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - + _tao_server_request.init_reply (); - + TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); - + _tao_result = _tao_adapter->interfacedef_cdr_insert ( _tao_out, @@ -1148,7 +1154,7 @@ void POA_CORBA::Policy::_interface_skel ( _tao_adapter->dispose (_tao_retval); } ACE_ENDTRY; - + if (_tao_result == 0) { ACE_THROW (CORBA::MARSHAL ()); @@ -1203,20 +1209,20 @@ POA_CORBA::Policy::_this (ACE_ENV_SINGLE_ARG_DECL) { TAO_Stub *stub = this->_create_stub (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - + TAO_Stub_Auto_Ptr safe_stub (stub); - + CORBA::Object_ptr tmp = CORBA::Object::_nil (); - + if (stub->servant_orb_var ()->orb_core ()->optimize_collocation_objects ()) ACE_NEW_RETURN (tmp, CORBA::Object (stub, 1, this), 0); else ACE_NEW_RETURN (tmp, CORBA::Object (stub, 0, this), 0); - + CORBA::Object_var obj = tmp; - + (void) safe_stub.release (); - + return ::CORBA::Policy::_unchecked_narrow (obj.in ()); } diff --git a/TAO/tao/PortableServer/Servant_Dispatcher.h b/TAO/tao/PortableServer/Servant_Dispatcher.h index eaeb04bc7e2..9a4f4a76f34 100644 --- a/TAO/tao/PortableServer/Servant_Dispatcher.h +++ b/TAO/tao/PortableServer/Servant_Dispatcher.h @@ -29,6 +29,7 @@ class TAO_POA_Policy_Set; class TAO_POA; class ACE_Lock; class TAO_ORB_Core; +class TAO_Service_Context; /** * @class TAO_Servant_Dispatcher @@ -41,10 +42,23 @@ class TAO_PortableServer_Export TAO_Servant_Dispatcher public: virtual ~TAO_Servant_Dispatcher (void); - /// Dispatch the request to the servant. - virtual void dispatch (TAO_Object_Adapter::Servant_Upcall &servant_upcall, - TAO_ServerRequest &req - ACE_ENV_ARG_DECL) = 0; + /// Pre_invoke remote request. + virtual void pre_invoke_remote_request (TAO_POA &poa, + CORBA::Short servant_priority, + TAO_Service_Context &request_service_context, + TAO_Service_Context &reply_service_context, + TAO_Object_Adapter::Servant_Upcall::Pre_Invoke_State &pre_invoke_state + ACE_ENV_ARG_DECL) = 0; + + /// Pre_invoke collocated request. + virtual void pre_invoke_collocated_request (TAO_POA &poa, + CORBA::Short servant_priority, + TAO_Object_Adapter::Servant_Upcall::Pre_Invoke_State &pre_invoke_state + ACE_ENV_ARG_DECL) = 0; + + /// Post_invoke request. + virtual void post_invoke (TAO_POA &poa, + TAO_Object_Adapter::Servant_Upcall::Pre_Invoke_State &pre_invoke_state) = 0; /// Factory method for creating new POA's. virtual TAO_POA *create_POA (const ACE_CString &name, diff --git a/TAO/tao/PortableServer/ThruPOA_Object_Proxy_Impl.cpp b/TAO/tao/PortableServer/ThruPOA_Object_Proxy_Impl.cpp index 8a0aec21337..9bb4a7802e0 100644 --- a/TAO/tao/PortableServer/ThruPOA_Object_Proxy_Impl.cpp +++ b/TAO/tao/PortableServer/ThruPOA_Object_Proxy_Impl.cpp @@ -33,8 +33,13 @@ TAO_ThruPOA_Object_Proxy_Impl::_is_a (const CORBA::Object_ptr target, target->_object_key (), "_is_a", forward_to.out () - ACE_ENV_ARG_PARAMETER); + ACE_ENV_ARG_PARAMETER + ); ACE_CHECK_RETURN (0); + + servant_upcall.pre_invoke_collocated_request (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN (0); + return servant_upcall.servant ()->_is_a (logical_type_id ACE_ENV_ARG_PARAMETER); } @@ -59,7 +64,11 @@ TAO_ThruPOA_Object_Proxy_Impl::_non_existent (const CORBA::Object_ptr target target->_object_key (), "_non_existent", forward_to.out () - ACE_ENV_ARG_PARAMETER); + ACE_ENV_ARG_PARAMETER + ); + ACE_TRY_CHECK; + + servant_upcall.pre_invoke_collocated_request (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; return servant_upcall.servant ()->_non_existent (ACE_ENV_SINGLE_ARG_PARAMETER); @@ -93,7 +102,11 @@ TAO_ThruPOA_Object_Proxy_Impl::_get_interface (const CORBA::Object_ptr target target->_object_key (), "_get_interface", forward_to.out () - ACE_ENV_ARG_PARAMETER); + ACE_ENV_ARG_PARAMETER + ); + ACE_TRY_CHECK; + + servant_upcall.pre_invoke_collocated_request (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; return servant_upcall.servant ()->_get_interface (ACE_ENV_SINGLE_ARG_PARAMETER); diff --git a/TAO/tao/RTPortableServer/RT_Collocation_Resolver.cpp b/TAO/tao/RTPortableServer/RT_Collocation_Resolver.cpp index 669baf5ea01..0613f9fa2bd 100644 --- a/TAO/tao/RTPortableServer/RT_Collocation_Resolver.cpp +++ b/TAO/tao/RTPortableServer/RT_Collocation_Resolver.cpp @@ -40,6 +40,11 @@ TAO_RT_Collocation_Resolver::is_collocated (CORBA::Object_ptr object TAO_Thread_Pool *target_thread_pool = (TAO_Thread_Pool *) poa->thread_pool (); + // If the target POA does not have a dedicated thread pool, then all + // calls to it are collocated. + if (target_thread_pool == 0) + return 1; + /// Get the ORB_Core's TSS resources. TAO_ORB_Core_TSS_Resources &tss = *orb_core->get_tss_resources (); diff --git a/TAO/tao/RTPortableServer/RT_Servant_Dispatcher.cpp b/TAO/tao/RTPortableServer/RT_Servant_Dispatcher.cpp index d8ec4a0e834..3e1893cc2b0 100644 --- a/TAO/tao/RTPortableServer/RT_Servant_Dispatcher.cpp +++ b/TAO/tao/RTPortableServer/RT_Servant_Dispatcher.cpp @@ -10,45 +10,20 @@ ACE_RCSID(tao, Default_Acceptor_Filter, "$Id$") -RT_Priority_Model_Processing::RT_Priority_Model_Processing (TAO_POA &poa, - CORBA::Short servant_priority) - : state_ (NO_ACTION_REQUIRED), - poa_ (poa), - original_native_priority_ (0), - original_CORBA_priority_ (0), - servant_priority_ (servant_priority) -{ -} - -RT_Priority_Model_Processing::~RT_Priority_Model_Processing (void) +TAO_RT_Servant_Dispatcher::~TAO_RT_Servant_Dispatcher (void) { - if (this->state_ == PRIORITY_RESET_REQUIRED) - { - ACE_DECLARE_NEW_CORBA_ENV; - - ACE_TRY - { - this->post_invoke (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - // Eat up the exception. - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "Exception caught: TAO (%P|%t) - Priority_Model_Processing::~Priority_Model_Processing"); - } - ACE_ENDTRY; - } } void -RT_Priority_Model_Processing::pre_invoke ( - TAO_Service_Context &request_service_context, - TAO_Service_Context &reply_service_context - ACE_ENV_ARG_DECL) +TAO_RT_Servant_Dispatcher::pre_invoke_remote_request (TAO_POA &poa, + CORBA::Short servant_priority, + TAO_Service_Context &request_service_context, + TAO_Service_Context &reply_service_context, + TAO_Object_Adapter::Servant_Upcall::Pre_Invoke_State &pre_invoke_state + ACE_ENV_ARG_DECL) { TAO_Thread_Pool *thread_pool = - (TAO_Thread_Pool *) this->poa_.thread_pool (); + (TAO_Thread_Pool *) poa.thread_pool (); if (thread_pool != 0 && thread_pool->with_lanes ()) @@ -61,7 +36,7 @@ RT_Priority_Model_Processing::pre_invoke ( { // Get the ORB_Core's TSS resources. TAO_ORB_Core_TSS_Resources *tss = - this->poa_.orb_core ().get_tss_resources (); + poa.orb_core ().get_tss_resources (); /// Get the lane attribute in TSS. TAO_Thread_Lane *lane = @@ -84,11 +59,11 @@ RT_Priority_Model_Processing::pre_invoke ( // Remember current thread's priority. TAO_Protocols_Hooks *tph = - this->poa_.orb_core ().get_protocols_hooks (ACE_ENV_SINGLE_ARG_PARAMETER); + poa.orb_core ().get_protocols_hooks (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK; - if (tph->get_thread_CORBA_and_native_priority (this->original_CORBA_priority_, - this->original_native_priority_ + if (tph->get_thread_CORBA_and_native_priority (pre_invoke_state.original_CORBA_priority_, + pre_invoke_state.original_native_priority_ ACE_ENV_ARG_PARAMETER) == -1) ACE_THROW (CORBA::DATA_CONVERSION (1, @@ -97,7 +72,7 @@ RT_Priority_Model_Processing::pre_invoke ( const char *priority_model; RTCORBA::Priority target_priority = TAO_INVALID_PRIORITY; TAO_POA_Cached_Policies &cached_policies = - this->poa_.cached_policies (); + poa.cached_policies (); // NOT_SPECIFIED PriorityModel processing. if (cached_policies.priority_model () == @@ -150,7 +125,7 @@ RT_Priority_Model_Processing::pre_invoke ( priority_model = "RTCORBA::SERVER_DECLARED"; // Use the request associated with the servant. - target_priority = this->servant_priority_; + target_priority = servant_priority; } char thread_pool_id[BUFSIZ]; @@ -168,14 +143,15 @@ RT_Priority_Model_Processing::pre_invoke ( // Change the priority of the current thread for the duration of // request. if (target_priority != TAO_INVALID_PRIORITY && - target_priority != this->original_CORBA_priority_) + target_priority != pre_invoke_state.original_CORBA_priority_) { if (tph->set_thread_CORBA_priority (target_priority ACE_ENV_ARG_PARAMETER) == -1) ACE_THROW (CORBA::DATA_CONVERSION (1, CORBA::COMPLETED_NO)); - this->state_ = PRIORITY_RESET_REQUIRED; + pre_invoke_state.state_ = + TAO_Object_Adapter::Servant_Upcall::Pre_Invoke_State::PRIORITY_RESET_REQUIRED; if (TAO_debug_level > 0) { @@ -189,15 +165,15 @@ RT_Priority_Model_Processing::pre_invoke ( ACE_TEXT ("temporarily changed to CORBA/native priority %d/%d\n"), priority_model, thread_pool_id, - this->original_CORBA_priority_, - this->original_native_priority_, + pre_invoke_state.original_CORBA_priority_, + pre_invoke_state.original_native_priority_, target_priority, native_priority)); } } // No change in priority required. else if (target_priority != TAO_INVALID_PRIORITY && - target_priority == this->original_CORBA_priority_) + target_priority == pre_invoke_state.original_CORBA_priority_) { if (TAO_debug_level > 0) { @@ -207,8 +183,8 @@ RT_Priority_Model_Processing::pre_invoke ( ACE_TEXT ("is the same as the target priority\n"), priority_model, thread_pool_id, - this->original_CORBA_priority_, - this->original_native_priority_)); + pre_invoke_state.original_CORBA_priority_, + pre_invoke_state.original_native_priority_)); } } // Target priority is invalid. @@ -222,68 +198,110 @@ RT_Priority_Model_Processing::pre_invoke ( ACE_TEXT ("not changed\n"), priority_model, thread_pool_id, - this->original_CORBA_priority_, - this->original_native_priority_)); + pre_invoke_state.original_CORBA_priority_, + pre_invoke_state.original_native_priority_)); } } } void -RT_Priority_Model_Processing::post_invoke ( - ACE_ENV_SINGLE_ARG_DECL) +TAO_RT_Servant_Dispatcher::pre_invoke_collocated_request (TAO_POA &poa, + CORBA::Short servant_priority, + TAO_Object_Adapter::Servant_Upcall::Pre_Invoke_State &pre_invoke_state + ACE_ENV_ARG_DECL) { - if (this->state_ == PRIORITY_RESET_REQUIRED) + TAO_Thread_Pool *thread_pool = + (TAO_Thread_Pool *) poa.thread_pool (); + + if (thread_pool == 0 || + thread_pool->with_lanes ()) + { + // + // We don't mess with the priority of threads in lanes or for + // the default thread pool. + // + return; + } + + TAO_POA_Cached_Policies &cached_policies = + poa.cached_policies (); + + if (cached_policies.priority_model () != + TAO_POA_Cached_Policies::SERVER_DECLARED || + servant_priority == TAO_INVALID_PRIORITY) { - this->state_ = NO_ACTION_REQUIRED; + // + // We either don't have server declared model or servant + // priority is invalid. + // + return; + } - // Reset the priority of the current thread back to its original - // value. - TAO_Protocols_Hooks *tph = - this->poa_.orb_core ().get_protocols_hooks (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; + // + // SERVER_DECLARED PriorityModel processing. + // - if (tph->set_thread_native_priority (this->original_native_priority_ - ACE_ENV_ARG_PARAMETER) + // Remember current thread's priority. + TAO_Protocols_Hooks *tph = + poa.orb_core ().get_protocols_hooks (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + if (tph->get_thread_CORBA_and_native_priority (pre_invoke_state.original_CORBA_priority_, + pre_invoke_state.original_native_priority_ + ACE_ENV_ARG_PARAMETER) + == -1) + ACE_THROW (CORBA::DATA_CONVERSION (1, + CORBA::COMPLETED_NO)); + + // Change the priority of the current thread for the duration of + // request. + if (servant_priority != pre_invoke_state.original_CORBA_priority_) + { + if (tph->set_thread_CORBA_priority (servant_priority + ACE_ENV_ARG_PARAMETER) == -1) ACE_THROW (CORBA::DATA_CONVERSION (1, CORBA::COMPLETED_NO)); + + pre_invoke_state.state_ = + TAO_Object_Adapter::Servant_Upcall::Pre_Invoke_State::PRIORITY_RESET_REQUIRED; } } -///////////////////////////////////////////////////////////////////////// +void +TAO_RT_Servant_Dispatcher::post_invoke (TAO_POA &poa, + TAO_Object_Adapter::Servant_Upcall::Pre_Invoke_State &pre_invoke_state) -TAO_RT_Servant_Dispatcher::~TAO_RT_Servant_Dispatcher (void) { -} + if (pre_invoke_state.state_ == + TAO_Object_Adapter::Servant_Upcall::Pre_Invoke_State::PRIORITY_RESET_REQUIRED) + { + pre_invoke_state.state_ = + TAO_Object_Adapter::Servant_Upcall::Pre_Invoke_State::NO_ACTION_REQUIRED; -void -TAO_RT_Servant_Dispatcher::dispatch (TAO_Object_Adapter::Servant_Upcall &servant_upcall, - TAO_ServerRequest &req - ACE_ENV_ARG_DECL) -{ - // RTCORBA PriorityModelPolicy processing (may need to be - // moved/adjusted when POA threadpools are added). This is the - // earliest place we can do the processing, since only at this point - // we know the target POA. - RT_Priority_Model_Processing priority_processing (servant_upcall.poa (), - servant_upcall.priority ()); - - // Set thread's priority. - priority_processing.pre_invoke (req.request_service_context (), - req.reply_service_context () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; + ACE_DECLARE_NEW_CORBA_ENV; - // Servant dispatch. - servant_upcall.servant ()->_dispatch (req, - &servant_upcall - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; + ACE_TRY + { + // Reset the priority of the current thread back to its original + // value. + TAO_Protocols_Hooks *tph = + poa.orb_core ().get_protocols_hooks (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; - // Reset thread's priority to its original value. If this method - // isn't reached, i.e., because of an exception, the reset takes - // place in Priority_Model_Processing destructor. - priority_processing.post_invoke (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; + if (tph->set_thread_native_priority (pre_invoke_state.original_native_priority_ + ACE_ENV_ARG_PARAMETER) + == -1) + ACE_THROW (CORBA::DATA_CONVERSION (1, CORBA::COMPLETED_NO)); + ACE_TRY_CHECK; + } + ACE_CATCHANY + { + // Eat up the exception. + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, + "Exception caught: TAO (%P|%t) - Priority_Model_Processing::~Priority_Model_Processing"); + } + ACE_ENDTRY; + } } TAO_POA * diff --git a/TAO/tao/RTPortableServer/RT_Servant_Dispatcher.h b/TAO/tao/RTPortableServer/RT_Servant_Dispatcher.h index 5ef3f563923..8f600e77152 100644 --- a/TAO/tao/RTPortableServer/RT_Servant_Dispatcher.h +++ b/TAO/tao/RTPortableServer/RT_Servant_Dispatcher.h @@ -26,9 +26,6 @@ # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ -// Forward references. -class TAO_Service_Context; - /** * @class TAO_RT_Servant_Dispatcher * @@ -42,90 +39,34 @@ class TAO_RTPortableServer_Export TAO_RT_Servant_Dispatcher public: virtual ~TAO_RT_Servant_Dispatcher (void); - /// Dispatch the request to the servant. - virtual void dispatch (TAO_Object_Adapter::Servant_Upcall &servant_upcall, - TAO_ServerRequest &req - ACE_ENV_ARG_DECL); - - /// Factory method for creating new POA's. - virtual TAO_POA *create_POA (const ACE_CString &name, - TAO_POA_Manager &poa_manager, - const TAO_POA_Policy_Set &policies, - TAO_POA *parent, - ACE_Lock &lock, - TAO_SYNCH_MUTEX &thread_lock, - TAO_ORB_Core &orb_core, - TAO_Object_Adapter *object_adapter - ACE_ENV_ARG_DECL); -}; - -/** - * @class RT_Priority_Model_Processing - * - * @brief - * - * This class encapsulates processing necessary for - * RTCORBA CLIENT_PROPAGATED priority model. - * - * Although the destructor of this class resets the priority of - * the thread to it's original value, application should use - * <post_invoke> method for that purpose: destructor cannot - * propagate possible exceptions to the callee. Destructor's - * reset capability is intended as a last resort, i.e., if - * <post_invoke> isn't reached for some reason. - */ -class TAO_RTPortableServer_Export RT_Priority_Model_Processing -{ -public: - - // Constructor. - RT_Priority_Model_Processing (TAO_POA &poa, - CORBA::Short servant_priority); - - // Resets the priority of the current thread back to its original - // value if necessary, i.e., if it was changed and the - // <post_invoke> method hasn't been called. Unlike <post_invoke>, - // this method cannot propagate exceptions to the user. - ~RT_Priority_Model_Processing (void); - - // Checks if target POA supports RTCORBA::CLIENT_PROPAGATED - // PriorityModel. If so, stores the original priority of the - // current thread, and sets the thread to the client-propagated - // priority. - void pre_invoke (TAO_Service_Context &request_service_context, - TAO_Service_Context &reply_service_context - ACE_ENV_ARG_DECL); - - // Resets the priority of the current thread back to its original - // value, if necessary. - void post_invoke (ACE_ENV_SINGLE_ARG_DECL); - -private: - - RT_Priority_Model_Processing (const RT_Priority_Model_Processing &); - void operator= (const RT_Priority_Model_Processing &); - - enum State - { - NO_ACTION_REQUIRED, - PRIORITY_RESET_REQUIRED - }; - - // Indicates whether the priority of the thread needs to be reset - // back to its original value. - State state_; - - // Poa of the target servant. - TAO_POA &poa_; - - // Original native priority of the thread. - RTCORBA::Priority original_native_priority_; - - // Original CORBA priority of the thread. - RTCORBA::Priority original_CORBA_priority_; - - // Servant Priority. - CORBA::Short servant_priority_; + /// Pre_invoke remote request. + void pre_invoke_remote_request (TAO_POA &poa, + CORBA::Short servant_priority, + TAO_Service_Context &request_service_context, + TAO_Service_Context &reply_service_context, + TAO_Object_Adapter::Servant_Upcall::Pre_Invoke_State &pre_invoke_state + ACE_ENV_ARG_DECL); + + /// Pre_invoke collocated request. + void pre_invoke_collocated_request (TAO_POA &poa, + CORBA::Short servant_priority, + TAO_Object_Adapter::Servant_Upcall::Pre_Invoke_State &pre_invoke_state + ACE_ENV_ARG_DECL); + + /// Post_invoke request. + void post_invoke (TAO_POA &poa, + TAO_Object_Adapter::Servant_Upcall::Pre_Invoke_State &pre_invoke_state); + + /// Factory method for creating new POA's. + TAO_POA *create_POA (const ACE_CString &name, + TAO_POA_Manager &poa_manager, + const TAO_POA_Policy_Set &policies, + TAO_POA *parent, + ACE_Lock &lock, + TAO_SYNCH_MUTEX &thread_lock, + TAO_ORB_Core &orb_core, + TAO_Object_Adapter *object_adapter + ACE_ENV_ARG_DECL); }; #include "ace/post.h" diff --git a/TAO/tests/RTCORBA/Collocation/Collocation.cpp b/TAO/tests/RTCORBA/Collocation/Collocation.cpp index 59d817e9dd2..d45324bc69a 100644 --- a/TAO/tests/RTCORBA/Collocation/Collocation.cpp +++ b/TAO/tests/RTCORBA/Collocation/Collocation.cpp @@ -22,6 +22,11 @@ struct Test_Object_And_Servant typedef ACE_Array_Base<Test_Object_And_Servant> Tests; +void +setup_test_parameters (Test_Object_And_Servant *test, + RTCORBA::Current_ptr current, + CORBA::ORB_ptr orb + ACE_ENV_ARG_PARAMETER); class test_i : public POA_test, public PortableServer::RefCountServantBase @@ -29,7 +34,8 @@ class test_i : public: test_i (CORBA::ORB_ptr orb, PortableServer::POA_ptr poa, - Tests &tests); + Tests &tests + ACE_ENV_ARG_DECL); void start (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)); @@ -43,6 +49,22 @@ public: void client_propagated (int); + int server_declared (void); + + void server_declared (int); + + RTCORBA::Priority server_priority (void); + + void server_priority (RTCORBA::Priority); + + int in_lane (void); + + void in_lane (int); + + int serviced_by_rt_tp (void); + + void serviced_by_rt_tp (int); + void thread_info (const char *method_name); void invocation_pool_and_lane (CORBA::ULong pool, @@ -52,26 +74,51 @@ public: void invocation_lane (CORBA::ULong lane); + RTCORBA::Priority invocation_priority (void); + + void invocation_priority (RTCORBA::Priority); + private: CORBA::ORB_var orb_; PortableServer::POA_var poa_; Tests &tests_; + int client_propagated_; + int server_declared_; + RTCORBA::Priority server_priority_; + int in_lane_; + int serviced_by_rt_tp_; + CORBA::ULong pool_; CORBA::ULong lane_; + RTCORBA::Priority invocation_priority_; - int client_propagated_; + RTCORBA::Current_var current_; }; test_i::test_i (CORBA::ORB_ptr orb, PortableServer::POA_ptr poa, - Tests &tests) + Tests &tests + ACE_ENV_ARG_DECL) : orb_ (CORBA::ORB::_duplicate (orb)), poa_ (PortableServer::POA::_duplicate (poa)), tests_ (tests), - client_propagated_ (0) + client_propagated_ (0), + server_declared_ (0), + server_priority_ (0), + serviced_by_rt_tp_ (1), + invocation_priority_ (0) { + CORBA::Object_var object = + this->orb_->resolve_initial_references ("RTCurrent" + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + this->current_ = + RTCORBA::Current::_narrow (object.in () + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; } int @@ -86,6 +133,54 @@ test_i::client_propagated (int client_propagated) this->client_propagated_ = client_propagated; } +int +test_i::server_declared (void) +{ + return this->server_declared_; +} + +void +test_i::server_declared (int server_declared) +{ + this->server_declared_ = server_declared; +} + +RTCORBA::Priority +test_i::server_priority (void) +{ + return this->server_priority_; +} + +void +test_i::server_priority (RTCORBA::Priority server_priority) +{ + this->server_priority_ = server_priority; +} + +int +test_i::in_lane (void) +{ + return this->in_lane_; +} + +void +test_i::in_lane (int in_lane) +{ + this->in_lane_ = in_lane; +} + +int +test_i::serviced_by_rt_tp (void) +{ + return this->serviced_by_rt_tp_; +} + +void +test_i::serviced_by_rt_tp (int serviced_by_rt_tp) +{ + this->serviced_by_rt_tp_ = serviced_by_rt_tp; +} + void test_i::invocation_pool_and_lane (CORBA::ULong pool, CORBA::ULong lane) @@ -106,6 +201,18 @@ test_i::invocation_lane (CORBA::ULong lane) this->lane_ = lane; } +RTCORBA::Priority +test_i::invocation_priority (void) +{ + return this->invocation_priority_; +} + +void +test_i::invocation_priority (RTCORBA::Priority invocation_priority) +{ + this->invocation_priority_ = invocation_priority; +} + void test_i::start (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) @@ -124,27 +231,11 @@ test_i::start (ACE_ENV_SINGLE_ARG_DECL) Test_Object_And_Servant *test = 0; iterator.next (test); - if (test->servant_->client_propagated ()) - { - CORBA::Object_var object = - this->orb_->resolve_initial_references ("RTCurrent" - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - RTCORBA::Current_var current = - RTCORBA::Current::_narrow (object.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - CORBA::Short current_thread_priority = - current->the_priority (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - if (current_thread_priority == default_thread_priority) - test->servant_->invocation_lane (0); - else - test->servant_->invocation_lane (1); - } + setup_test_parameters (test, + this->current_.in (), + this->orb_.in () + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; test->object_->method (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK; @@ -185,22 +276,30 @@ test_i::thread_info (const char *method_name) if (lane) { ACE_DEBUG ((LM_DEBUG, - "%s invoked by thread %t (pool id = %d; lane id = %d)\n", + "(%t) %s (pool = %d; lane = %d); priority = %d (should be %d)\n", method_name, lane->pool ().id (), - lane->id ())); + lane->id (), + this->current_->the_priority (), + this->invocation_priority ())); ACE_ASSERT (this->pool_ == lane->pool ().id ()); ACE_ASSERT (this->lane_ == lane->id ()); + ACE_ASSERT (this->current_->the_priority () == + this->invocation_priority ()); } else { ACE_DEBUG ((LM_DEBUG, - "%s invoked by thread %t (default thread pool)\n", - method_name)); + "(%t) %s (default thread pool); priority = %d (should be %d)\n", + method_name, + this->current_->the_priority (), + this->invocation_priority ())); ACE_ASSERT (this->pool_ == 0); ACE_ASSERT (this->lane_ == 0); + ACE_ASSERT (this->current_->the_priority () == + this->invocation_priority ()); } } @@ -217,6 +316,61 @@ test_i::_default_POA (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) return PortableServer::POA::_duplicate (this->poa_.in ()); } +void +setup_test_parameters (Test_Object_And_Servant *test, + RTCORBA::Current_ptr current, + CORBA::ORB_ptr orb + ACE_ENV_ARG_DECL) +{ + CORBA::Short current_thread_priority = + current->the_priority (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + if (!test->servant_->serviced_by_rt_tp () || + test->servant_->client_propagated ()) + { + test->servant_->invocation_priority (current_thread_priority); + } + else if (test->servant_->server_declared ()) + { + test->servant_->invocation_priority (test->servant_->server_priority ()); + } + else + { + test->servant_->invocation_priority (default_thread_priority); + } + + if (test->servant_->client_propagated () && + test->servant_->in_lane ()) + { + if (current_thread_priority == default_thread_priority) + test->servant_->invocation_lane (0); + else + test->servant_->invocation_lane (1); + } + + if (!test->servant_->serviced_by_rt_tp ()) + { + // Get the ORB_Core's TSS resources. + TAO_ORB_Core_TSS_Resources *tss = + orb->orb_core ()->get_tss_resources (); + + /// Get the lane attribute in TSS. + TAO_Thread_Lane *lane = + (TAO_Thread_Lane *) tss->lane_; + + if (lane) + { + test->servant_->invocation_pool_and_lane (lane->pool ().id (), + lane->id ()); + } + else + { + test->servant_->invocation_pool_and_lane (0, 0); + } + } +} + class Server { public: @@ -225,7 +379,10 @@ public: ACE_ENV_ARG_DECL); void create_servant_in_root_poa (ACE_ENV_SINGLE_ARG_DECL); - void create_poa_and_servant_with_tp_policy (ACE_ENV_SINGLE_ARG_DECL); + void create_poa_and_servant_with_tp_policy (const char *poa_name, + int set_priority_model, + RTCORBA::PriorityModel priority_model + ACE_ENV_ARG_DECL); void create_poa_and_servant_with_tp_with_lanes_policy (const char *poa_name, RTCORBA::PriorityModel priority_model ACE_ENV_ARG_DECL); @@ -318,11 +475,14 @@ Server::create_servant_in_root_poa (ACE_ENV_SINGLE_ARG_DECL) ACE_NEW_THROW_EX (servant, test_i (this->orb_.in (), this->root_poa_.in (), - this->tests_), + this->tests_ + ACE_ENV_ARG_PARAMETER), CORBA::NO_MEMORY ()); ACE_CHECK; servant->invocation_pool_and_lane (0, 0); + servant->in_lane (0); + servant->serviced_by_rt_tp (0); PortableServer::ServantBase_var safe_servant (servant); @@ -335,7 +495,10 @@ Server::create_servant_in_root_poa (ACE_ENV_SINGLE_ARG_DECL) } void -Server::create_poa_and_servant_with_tp_policy (ACE_ENV_SINGLE_ARG_DECL) +Server::create_poa_and_servant_with_tp_policy (const char *poa_name, + int set_priority_model, + RTCORBA::PriorityModel priority_model + ACE_ENV_ARG_DECL) { RTCORBA::ThreadpoolId threadpool_id = this->rt_orb_->create_threadpool (this->stacksize_, @@ -353,45 +516,136 @@ Server::create_poa_and_servant_with_tp_policy (ACE_ENV_SINGLE_ARG_DECL) ACE_ENV_ARG_PARAMETER); ACE_CHECK; - CORBA::Policy_var implicit_activation_policy = - this->root_poa_->create_implicit_activation_policy (PortableServer::IMPLICIT_ACTIVATION - ACE_ENV_ARG_PARAMETER); + CORBA::Policy_var priority_model_policy = + this->rt_orb_->create_priority_model_policy (priority_model, + default_thread_priority + ACE_ENV_ARG_PARAMETER); ACE_CHECK; CORBA::PolicyList policies; policies.length (policies.length () + 1); policies[policies.length () - 1] = - implicit_activation_policy; - - policies.length (policies.length () + 1); - policies[policies.length () - 1] = threadpool_policy; + if (set_priority_model) + { + policies.length (policies.length () + 1); + policies[policies.length () - 1] = + priority_model_policy; + } + PortableServer::POA_var poa = - this->root_poa_->create_POA ("tp_child", + this->root_poa_->create_POA (poa_name, this->poa_manager_.in (), policies ACE_ENV_ARG_PARAMETER); ACE_CHECK; - test_i *servant = 0; - ACE_NEW_THROW_EX (servant, + RTPortableServer::POA_var rt_poa = + RTPortableServer::POA::_narrow (poa.in () + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + test_i *servant1 = 0; + ACE_NEW_THROW_EX (servant1, test_i (this->orb_.in (), poa.in (), - this->tests_), + this->tests_ + ACE_ENV_ARG_PARAMETER), CORBA::NO_MEMORY ()); ACE_CHECK; - servant->invocation_pool_and_lane (1, 0); + servant1->in_lane (0); - PortableServer::ServantBase_var safe_servant (servant); + PortableServer::ObjectId_var id1; + + if (set_priority_model) + { + if (priority_model == RTCORBA::CLIENT_PROPAGATED) + { + servant1->invocation_pool_and_lane (1, 0); + servant1->client_propagated (1); + + id1 = + rt_poa->activate_object (servant1 + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + } + else + { + test_i *servant2 = 0; + + ACE_NEW_THROW_EX (servant2, + test_i (this->orb_.in (), + poa.in (), + this->tests_ + ACE_ENV_ARG_PARAMETER), + CORBA::NO_MEMORY ()); + ACE_CHECK; + + servant2->in_lane (0); + + PortableServer::ServantBase_var safe_servant2 (servant2); + + PortableServer::ObjectId_var id2; + + servant1->invocation_pool_and_lane (2, 0); + servant2->invocation_pool_and_lane (2, 0); + servant1->server_declared (1); + servant2->server_declared (1); + servant1->server_priority (default_thread_priority + 1); + servant2->server_priority (default_thread_priority); + + id1 = + rt_poa->activate_object_with_priority (servant1, + default_thread_priority + 1 + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + id2 = + rt_poa->activate_object_with_priority (servant2, + default_thread_priority + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + CORBA::Object_var object2 = + poa->id_to_reference (id2.in () + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + this->tests_.size (this->tests_.size () + 1); + this->tests_[this->tests_.size () - 1].object_ = + test::_narrow (object2.in () + ACE_ENV_ARG_PARAMETER); + this->tests_[this->tests_.size () - 1].servant_ = + servant2; + ACE_CHECK; + } + } + else + { + servant1->invocation_pool_and_lane (3, 0); + + id1 = + rt_poa->activate_object (servant1 + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + } + + PortableServer::ServantBase_var safe_servant (servant1); + + CORBA::Object_var object1 = + poa->id_to_reference (id1.in () + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; this->tests_.size (this->tests_.size () + 1); - this->tests_[this->tests_.size () - 1].servant_ = - servant; this->tests_[this->tests_.size () - 1].object_ = - servant->_this (ACE_ENV_SINGLE_ARG_PARAMETER); + test::_narrow (object1.in () + ACE_ENV_ARG_PARAMETER); + this->tests_[this->tests_.size () - 1].servant_ = + servant1; ACE_CHECK; } @@ -455,59 +709,78 @@ Server::create_poa_and_servant_with_tp_with_lanes_policy (const char *poa_name, ACE_CHECK; test_i *servant1 = 0; - test_i *servant2 = 0; ACE_NEW_THROW_EX (servant1, test_i (this->orb_.in (), poa.in (), - this->tests_), + this->tests_ + ACE_ENV_ARG_PARAMETER), CORBA::NO_MEMORY ()); ACE_CHECK; - ACE_NEW_THROW_EX (servant2, - test_i (this->orb_.in (), - poa.in (), - this->tests_), - CORBA::NO_MEMORY ()); - ACE_CHECK; + servant1->in_lane (1); PortableServer::ServantBase_var safe_servant1 (servant1); - PortableServer::ServantBase_var safe_servant2 (servant2); PortableServer::ObjectId_var id1; - PortableServer::ObjectId_var id2; - if (priority_model == RTCORBA::SERVER_DECLARED) + if (priority_model == RTCORBA::CLIENT_PROPAGATED) { - servant1->invocation_pool_and_lane (3, 0); - servant2->invocation_pool_and_lane (3, 1); + servant1->invocation_pool (4); + servant1->client_propagated (1); + + id1 = + rt_poa->activate_object (servant1 + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + } + else + { + test_i *servant2 = 0; + + ACE_NEW_THROW_EX (servant2, + test_i (this->orb_.in (), + poa.in (), + this->tests_ + ACE_ENV_ARG_PARAMETER), + CORBA::NO_MEMORY ()); + ACE_CHECK; + + servant2->in_lane (1); + + PortableServer::ServantBase_var safe_servant2 (servant2); + + PortableServer::ObjectId_var id2; + + servant1->invocation_pool_and_lane (5, 1); + servant2->invocation_pool_and_lane (5, 0); + servant1->server_declared (1); + servant2->server_declared (1); + servant1->server_priority (default_thread_priority + 1); + servant2->server_priority (default_thread_priority); id1 = rt_poa->activate_object_with_priority (servant1, - default_thread_priority + default_thread_priority + 1 ACE_ENV_ARG_PARAMETER); ACE_CHECK; id2 = rt_poa->activate_object_with_priority (servant2, - default_thread_priority + 1 + default_thread_priority ACE_ENV_ARG_PARAMETER); ACE_CHECK; - } - else - { - servant1->invocation_pool (2); - servant2->invocation_pool (2); - servant1->client_propagated (1); - servant2->client_propagated (1); - id1 = - rt_poa->activate_object (servant1 - ACE_ENV_ARG_PARAMETER); + CORBA::Object_var object2 = + poa->id_to_reference (id2.in () + ACE_ENV_ARG_PARAMETER); ACE_CHECK; - id2 = - rt_poa->activate_object (servant2 - ACE_ENV_ARG_PARAMETER); + this->tests_.size (this->tests_.size () + 1); + this->tests_[this->tests_.size () - 1].object_ = + test::_narrow (object2.in () + ACE_ENV_ARG_PARAMETER); + this->tests_[this->tests_.size () - 1].servant_ = + servant2; ACE_CHECK; } @@ -516,11 +789,6 @@ Server::create_poa_and_servant_with_tp_with_lanes_policy (const char *poa_name, ACE_ENV_ARG_PARAMETER); ACE_CHECK; - CORBA::Object_var object2 = - poa->id_to_reference (id2.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - this->tests_.size (this->tests_.size () + 1); this->tests_[this->tests_.size () - 1].object_ = test::_narrow (object1.in () @@ -528,14 +796,6 @@ Server::create_poa_and_servant_with_tp_with_lanes_policy (const char *poa_name, this->tests_[this->tests_.size () - 1].servant_ = servant1; ACE_CHECK; - - this->tests_.size (this->tests_.size () + 1); - this->tests_[this->tests_.size () - 1].object_ = - test::_narrow (object2.in () - ACE_ENV_ARG_PARAMETER); - this->tests_[this->tests_.size () - 1].servant_ = - servant2; - ACE_CHECK; } void @@ -547,17 +807,11 @@ Server::start_testing (ACE_ENV_SINGLE_ARG_DECL) Test_Object_And_Servant *test = 0; iterator.next (test); - if (test->servant_->client_propagated ()) - { - CORBA::Short current_thread_priority = - this->current_->the_priority (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - if (current_thread_priority == default_thread_priority) - test->servant_->invocation_lane (0); - else - test->servant_->invocation_lane (1); - } + setup_test_parameters (test, + this->current_.in (), + this->orb_.in () + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; test->object_->start (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK; @@ -610,7 +864,22 @@ main (int argc, char *argv[]) server.create_servant_in_root_poa (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - server.create_poa_and_servant_with_tp_policy (ACE_ENV_SINGLE_ARG_PARAMETER); + server.create_poa_and_servant_with_tp_policy ("tp_client_propagated_poa", + 1, + RTCORBA::CLIENT_PROPAGATED + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + server.create_poa_and_servant_with_tp_policy ("tp_server_declared_poa", + 1, + RTCORBA::SERVER_DECLARED + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + server.create_poa_and_servant_with_tp_policy ("tp_no_priority_model_poa", + 0, + RTCORBA::CLIENT_PROPAGATED + ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; server.create_poa_and_servant_with_tp_with_lanes_policy ("tp_with_lanes_client_propagated_poa", diff --git a/TAO/tests/RTCORBA/Collocation/README b/TAO/tests/RTCORBA/Collocation/README index ee02bff879d..ddf7fbe3ce4 100644 --- a/TAO/tests/RTCORBA/Collocation/README +++ b/TAO/tests/RTCORBA/Collocation/README @@ -5,34 +5,41 @@ Description: This is a test for collocation when using thread pools and lanes. There are multiple servants in this test: -(a) One servant is in the Root POA which is service by the default - thread pool. - -(b) Another servant is in a POA which is serviced by a thread pool - without lanes. Since a thread pool without lanes is really a - thread pool with one lane, all requests will be handled by this - one lane. Therefore, setting the priority model policy was not - necessary for this POA. - -(c) There are two servants is in a POA which is serviced by a thread - pool with lanes, with the CLIENT_PROPAGATED policy. Depending on - the priority of the caller, either one of the lanes processes the - request. - -(d) There are two more servants is in a POA which is serviced by a - thread pool with lanes, with the SERVER_DECLARED policy. One - servant is registered to match one lane and the other servant - matches the other lane. - -All six servants are put into a global array. The main thread starts -off the testing by calling start() on each servant in the array. The -implementation of start() calls method() on each servant in the array. -Since the upcalls will be handled by the lane corresponding to each -servant, all six lanes ends up calling into one another. - -The main thread then changes its priority and calls start() on each -servant in the array. This makes sure to exercise the second lane in -the thread pool with lanes and the CLIENT_PROPAGATED priority. +- One servant is in the Root POA which is service by the default + thread pool. + +- One servant is in a POA with the CLIENT_PROPAGATED policy and is + serviced by a thread pool without lanes. + +- Two servants are in a POA with the SERVER_DECLARED policy and is + serviced by a thread pool without lanes. One of the servant is at + default priority and the other is at default + 1 priority. + +- One servant is in a POA without a priority model policy and is + serviced by a thread pool without lanes. + +- One servants is in a POA with the CLIENT_PROPAGATED policy and is + serviced by a thread pool with lanes. Depending on the priority of + the caller, either one of the lanes processes the request. + +- Two servants are in a POA with the SERVER_DECLARED policy and is + serviced by a thread pool with lanes. One of the servant is at + default priority and the other is at default + 1 priority. + +All servants are put into a global array. The main thread starts off +the testing at default priority by calling start() on each servant in +the array. The implementation of start() calls method() on each +servant in the array. Since the upcalls will be handled by a thread +pool corresponding to each servant, all pools and lanes ends up +calling into one another. + +The main thread then changes its priority to default + 1 and calls +start() on each servant in the array. This makes sure to exercise the +second lane in the thread pool with lanes and the CLIENT_PROPAGATED +priority. + +The test checks that the correct pool, lane, and priority is being +used to run the upcall. The test also converts the objects into strings and back to make sure that collocation works as expected for imported objects. |