summaryrefslogtreecommitdiff
path: root/TAO/tao/Invocation.cpp
diff options
context:
space:
mode:
authormarina <marina@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-09-27 03:47:28 +0000
committermarina <marina@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-09-27 03:47:28 +0000
commitfa21cd5e3fefa1ebc71c7268b137a9f6ca5bb43e (patch)
tree631ace2f1108d2b13ecab5088e0bdc1125b4f1ed /TAO/tao/Invocation.cpp
parent10daa44ffd274067df75989f9f80e75464e07a5a (diff)
downloadATCD-fa21cd5e3fefa1ebc71c7268b137a9f6ca5bb43e.tar.gz
ChangeLogTag:Sun Sep 26 22:44:50 1999 Marina Spivak <marina@cs.wustl.edu>
Diffstat (limited to 'TAO/tao/Invocation.cpp')
-rw-r--r--TAO/tao/Invocation.cpp25
1 files changed, 21 insertions, 4 deletions
diff --git a/TAO/tao/Invocation.cpp b/TAO/tao/Invocation.cpp
index 17785df71b7..e5cd550f5c4 100644
--- a/TAO/tao/Invocation.cpp
+++ b/TAO/tao/Invocation.cpp
@@ -131,7 +131,6 @@ TAO_GIOP_Invocation::select_profile_based_on_policy
else
// mode == TAO::USE_THREAD_PRIORITY
{
- //@@ Need to convert thread priority into CORBA priority.
if (this->orb_core_->get_thread_priority (min_priority) == -1)
ACE_THROW_RETURN (CORBA::DATA_CONVERSION (1,
CORBA::COMPLETED_NO),
@@ -388,7 +387,12 @@ TAO_GIOP_Invocation::invoke (CORBA::Boolean is_roundtrip,
// @@ Maybe the right place to do this is once the reply is
// received? But what about oneways?
- this->stub_->set_valid_profile ();
+ // @@ Preserve semantics for the case when no ClientPriorityPolicy
+ // is set/used. For the case when it is, we don't want to set
+ // anything because usage cases of various profiles based on
+ // priorities aren't fully supported by MProfiles & friends (yet).
+ if (this->stub_->profile_in_use () == this->profile_)
+ this->stub_->set_valid_profile ();
return TAO_INVOKE_OK;
}
@@ -972,7 +976,12 @@ TAO_GIOP_Locate_Request_Invocation::invoke (CORBA::Environment &ACE_TRY_ENV)
// @@ Maybe the right place to do this is once the reply is
// received? But what about oneways?
- this->stub_->set_valid_profile ();
+ // @@ Preserve semantics for the case when no ClientPriorityPolicy
+ // is set/used. For the case when it is, we don't want to set
+ // anything because usage cases of various profiles based on
+ // priorities aren't fully supported by MProfiles & friends (yet).
+ if (this->stub_->profile_in_use () == this->profile_)
+ this->stub_->set_valid_profile ();
// Wait for the reply.
@@ -1014,7 +1023,15 @@ TAO_GIOP_Locate_Request_Invocation::invoke (CORBA::Environment &ACE_TRY_ENV)
// NOTREACHED
case TAO_GIOP_OBJECT_FORWARD:
- return this->location_forward (this->inp_stream (), ACE_TRY_ENV);
+ // When ClientPriorityPolicy is not set/used, behave normally.
+ if (this->stub_->profile_in_use () == this->profile_)
+ return this->location_forward (this->inp_stream (),
+ ACE_TRY_ENV);
+ else
+ // else, don't change profile structures - we are not ready
+ // to handle location forwards with priority profiles yet (not enough
+ // support from MProfiles ...)
+ return TAO_INVOKE_RESTART;
// NOTREACHED
}