summaryrefslogtreecommitdiff
path: root/TAO
diff options
context:
space:
mode:
authorirfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2002-05-02 04:58:03 +0000
committerirfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2002-05-02 04:58:03 +0000
commitc054103473e47b3e5ec6379e3b3b09bc879253ac (patch)
tree81b850ad0da28703d9348ff162a9f9f8b636c5e7 /TAO
parentef67edf84c2cdf30a1345adca0dcede8db8330d6 (diff)
downloadATCD-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-02a94
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/thru_poa_proxy_impl_ss.cpp24
-rw-r--r--TAO/tao/Domain/DomainS.cpp278
-rw-r--r--TAO/tao/PortableServer/Collocated_Object.cpp8
-rw-r--r--TAO/tao/PortableServer/Default_Servant_Dispatcher.cpp36
-rw-r--r--TAO/tao/PortableServer/Default_Servant_Dispatcher.h39
-rw-r--r--TAO/tao/PortableServer/ImplRepoS.cpp1072
-rw-r--r--TAO/tao/PortableServer/Object_Adapter.cpp50
-rw-r--r--TAO/tao/PortableServer/Object_Adapter.h39
-rw-r--r--TAO/tao/PortableServer/PolicyS.cpp250
-rw-r--r--TAO/tao/PortableServer/Servant_Dispatcher.h22
-rw-r--r--TAO/tao/PortableServer/ThruPOA_Object_Proxy_Impl.cpp19
-rw-r--r--TAO/tao/RTPortableServer/RT_Collocation_Resolver.cpp5
-rw-r--r--TAO/tao/RTPortableServer/RT_Servant_Dispatcher.cpp196
-rw-r--r--TAO/tao/RTPortableServer/RT_Servant_Dispatcher.h115
-rw-r--r--TAO/tests/RTCORBA/Collocation/Collocation.cpp471
-rw-r--r--TAO/tests/RTCORBA/Collocation/README63
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.