diff options
author | nanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-07-23 07:07:05 +0000 |
---|---|---|
committer | nanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-07-23 07:07:05 +0000 |
commit | f7c1b16bf905a46bbfff8fda103cf61ebb0c2a07 (patch) | |
tree | 10562c51e724df20dbd068c0acf2f0630e19065b | |
parent | 44a53cc6daca4f8b97b48802b11be327b66c8a5f (diff) | |
download | ATCD-f7c1b16bf905a46bbfff8fda103cf61ebb0c2a07.tar.gz |
ChangeLogTag:Thu Jul 22 21:13:25 1999 Nanbor Wang <nanbor@cs.wustl.edu>
-rw-r--r-- | TAO/tao/Object.cpp | 22 |
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; |