summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-07-23 07:07:05 +0000
committernanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-07-23 07:07:05 +0000
commitf7c1b16bf905a46bbfff8fda103cf61ebb0c2a07 (patch)
tree10562c51e724df20dbd068c0acf2f0630e19065b
parent44a53cc6daca4f8b97b48802b11be327b66c8a5f (diff)
downloadATCD-f7c1b16bf905a46bbfff8fda103cf61ebb0c2a07.tar.gz
ChangeLogTag:Thu Jul 22 21:13:25 1999 Nanbor Wang <nanbor@cs.wustl.edu>
-rw-r--r--TAO/tao/Object.cpp22
1 files changed, 19 insertions, 3 deletions
diff --git a/TAO/tao/Object.cpp b/TAO/tao/Object.cpp
index ab2fb532540..13ffd4454ed 100644
--- a/TAO/tao/Object.cpp
+++ b/TAO/tao/Object.cpp
@@ -59,7 +59,7 @@ CORBA_Object::_is_a (const CORBA::Char *type_id,
TAO_Object_Adapter::Servant_Upcall servant_upcall
(*this->_stubobj ()->servant_orb_var ()->orb_core ()->object_adapter ());
servant_upcall.prepare_for_upcall (this->_object_key (),
- "_non_existent",
+ "_is_a",
ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
return servant_upcall.servant ()->_is_a (type_id, ACE_TRY_ENV);
@@ -223,8 +223,24 @@ CORBA::Boolean
CORBA_Object::_non_existent (CORBA::Environment &ACE_TRY_ENV)
{
// If the object is collocated then try locally....
- if (this->is_collocated_ && this->servant_ != 0)
- return this->servant_->_non_existent (ACE_TRY_ENV);
+ if (this->is_collocated_)
+ {
+ // Which collocation strategy should we use?
+ if (this->protocol_proxy_->servant_orb_var ()->orb_core ()->get_collocation_strategy () == TAO_ORB_Core::THRU_POA)
+ {
+ TAO_Object_Adapter::Servant_Upcall servant_upcall
+ (*this->_stubobj ()->servant_orb_var ()->orb_core ()->object_adapter ());
+ servant_upcall.prepare_for_upcall (this->_object_key (),
+ "_non_existent",
+ ACE_TRY_ENV);
+ ACE_CHECK_RETURN (0);
+ return servant_upcall.servant ()->_non_existent (ACE_TRY_ENV);
+ }
+
+ // Direct collocation strategy is used.
+ if (this->servant_ != 0)
+ return this->servant_->_non_existent (ACE_TRY_ENV);
+ }
CORBA::Boolean _tao_retval = 0;