diff options
author | Johnny Willemsen <jwillemsen@remedy.nl> | 2005-07-27 09:45:03 +0000 |
---|---|---|
committer | Johnny Willemsen <jwillemsen@remedy.nl> | 2005-07-27 09:45:03 +0000 |
commit | 21191a1085cca0163ce1079b6b94e4f3c46688c0 (patch) | |
tree | 6581f370cdd4d3db2e4811c2216ae740c6455c55 | |
parent | 0727ddc5267854215a8e988f345f345c15d775e0 (diff) | |
download | ATCD-21191a1085cca0163ce1079b6b94e4f3c46688c0.tar.gz |
ChangeLogTag: Wed Jul 27 08:39:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
-rw-r--r-- | TAO/tao/PortableServer/Collocated_Object_Proxy_Broker.cpp | 93 |
1 files changed, 46 insertions, 47 deletions
diff --git a/TAO/tao/PortableServer/Collocated_Object_Proxy_Broker.cpp b/TAO/tao/PortableServer/Collocated_Object_Proxy_Broker.cpp index b42eb4c6d23..dd27ae99b0f 100644 --- a/TAO/tao/PortableServer/Collocated_Object_Proxy_Broker.cpp +++ b/TAO/tao/PortableServer/Collocated_Object_Proxy_Broker.cpp @@ -19,6 +19,52 @@ ACE_RCSID (PortableServer, namespace TAO { + CORBA::Boolean + Collocated_Object_Proxy_Broker::_is_a (CORBA::Object_ptr target, + const char *type_id + ACE_ENV_ARG_DECL) + { + TAO_Stub *stub = target->_stubobj (); + + // Which collocation strategy should we use? + if (stub != 0 && + stub->servant_orb_var ()->orb_core ()->get_collocation_strategy () + == TAO_ORB_Core::THRU_POA) + { + TAO::Portable_Server::Servant_Upcall servant_upcall ( + stub->servant_orb_var ()->orb_core () + ); + + CORBA::Object_var forward_to; + servant_upcall.prepare_for_upcall ( + stub->profile_in_use ()->object_key (), + "_is_a", + 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 (type_id + ACE_ENV_ARG_PARAMETER); + } + + // Direct collocation strategy is used. + if (target->_servant () != 0) + { + return target->_servant ()->_is_a (type_id + ACE_ENV_ARG_PARAMETER); + } + + return 0; + } + +#if (TAO_HAS_MINIMUM_CORBA == 0) + char * Collocated_Object_Proxy_Broker::_repository_id (CORBA::Object_ptr target ACE_ENV_ARG_DECL) @@ -76,53 +122,6 @@ namespace TAO return _tao_retval; } - - CORBA::Boolean - Collocated_Object_Proxy_Broker::_is_a (CORBA::Object_ptr target, - const char *type_id - ACE_ENV_ARG_DECL) - { - TAO_Stub *stub = target->_stubobj (); - - // Which collocation strategy should we use? - if (stub != 0 && - stub->servant_orb_var ()->orb_core ()->get_collocation_strategy () - == TAO_ORB_Core::THRU_POA) - { - TAO::Portable_Server::Servant_Upcall servant_upcall ( - stub->servant_orb_var ()->orb_core () - ); - - CORBA::Object_var forward_to; - servant_upcall.prepare_for_upcall ( - stub->profile_in_use ()->object_key (), - "_is_a", - 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 (type_id - ACE_ENV_ARG_PARAMETER); - } - - // Direct collocation strategy is used. - if (target->_servant () != 0) - { - return target->_servant ()->_is_a (type_id - ACE_ENV_ARG_PARAMETER); - } - - return 0; - } - -#if (TAO_HAS_MINIMUM_CORBA == 0) - CORBA::Boolean Collocated_Object_Proxy_Broker::_non_existent (CORBA::Object_ptr target ACE_ENV_ARG_DECL) |