diff options
author | marina <marina@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-09-27 03:47:28 +0000 |
---|---|---|
committer | marina <marina@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-09-27 03:47:28 +0000 |
commit | fa21cd5e3fefa1ebc71c7268b137a9f6ca5bb43e (patch) | |
tree | 631ace2f1108d2b13ecab5088e0bdc1125b4f1ed /TAO/tao/Invocation.cpp | |
parent | 10daa44ffd274067df75989f9f80e75464e07a5a (diff) | |
download | ATCD-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.cpp | 25 |
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 } |