diff options
-rw-r--r-- | TAO/ChangeLogs/ChangeLog-02a | 9 | ||||
-rw-r--r-- | TAO/tao/Leader_Follower.cpp | 3 | ||||
-rw-r--r-- | TAO/tao/Transport.cpp | 26 |
3 files changed, 19 insertions, 19 deletions
diff --git a/TAO/ChangeLogs/ChangeLog-02a b/TAO/ChangeLogs/ChangeLog-02a index b23082f12cb..23676af75f7 100644 --- a/TAO/ChangeLogs/ChangeLog-02a +++ b/TAO/ChangeLogs/ChangeLog-02a @@ -1,3 +1,12 @@ +Sun Jul 29 11:58:51 2001 Carlos O'Ryan <coryan@uci.edu> + + * tao/Leader_Follower.cpp: + If an error is detected while waiting as a follower the loop + should return -1. + + * tao/Transport.cpp: + Merged in some bug fixes from the main trunk. + Sun Jul 29 09:00:57 2001 Carlos O'Ryan <coryan@uci.edu> * tao/LF_Event.cpp: diff --git a/TAO/tao/Leader_Follower.cpp b/TAO/tao/Leader_Follower.cpp index 99de1573511..d5ee2a0a02b 100644 --- a/TAO/tao/Leader_Follower.cpp +++ b/TAO/tao/Leader_Follower.cpp @@ -321,6 +321,9 @@ TAO_Leader_Follower::wait_for_event (TAO_LF_Event *event, if (event->successful ()) return 0; + if (event->error_detected ()) + return -1; + // FALLTHROUGH // We only get here if we woke up but the reply is not // complete yet, time to assume the leader role.... diff --git a/TAO/tao/Transport.cpp b/TAO/tao/Transport.cpp index fe458896574..3bb6115c194 100644 --- a/TAO/tao/Transport.cpp +++ b/TAO/tao/Transport.cpp @@ -1,8 +1,6 @@ // -*- C++ -*- // $Id$ - - #include "Transport.h" #include "Exception.h" @@ -29,7 +27,6 @@ ACE_RCSID(tao, Transport, "$Id$") - TAO_Synch_Refcountable::TAO_Synch_Refcountable (ACE_Lock *lock, int refcount) : ACE_Refcountable (refcount) , refcount_lock_ (lock) @@ -887,15 +884,9 @@ TAO_Transport::handle_input_i (TAO_Resume_Handle &rh, if (qd.more_fragments_ || (qd.msg_type_ == TAO_PLUGGABLE_MESSAGE_FRAGMENT)) { - // Make a copy of the message that we have - ACE_Data_Block *ndb = - message_block.data_block ()->clone (); - - // Replace the underlying the datablock - message_block.replace_data_block (ndb); - // Duplicate the node that we have as the node is on stack.. - TAO_Queued_Data *nqd = TAO_Queued_Data::duplicate (qd); + TAO_Queued_Data *nqd = + this->make_queued_data (message_block); return this->consolidate_fragments (nqd, rh); } @@ -1349,8 +1340,9 @@ TAO_Transport::process_parsed_messages (TAO_Queued_Data *qd, t == TAO_PLUGGABLE_MESSAGE_LOCATEREQUEST) { // Let us resume the handle before we go ahead to process the - // request. This will open up the handle for othe threads. + // request. This will open up the handle for other threads. rh.resume_handle (); + if (this->messaging_object ()->process_request_message ( this, qd) == -1) @@ -1366,10 +1358,13 @@ TAO_Transport::process_parsed_messages (TAO_Queued_Data *qd, else if (t == TAO_PLUGGABLE_MESSAGE_REPLY || t == TAO_PLUGGABLE_MESSAGE_LOCATEREPLY) { + rh.resume_handle (); + // @@todo: Maybe the input_cdr can be constructed from the // message_block TAO_Pluggable_Reply_Params params (this->orb_core ()); + if (this->messaging_object ()->process_reply_message (params, qd) == -1) { @@ -1401,13 +1396,6 @@ TAO_Transport::process_parsed_messages (TAO_Queued_Data *qd, return -1; } - // If we have received a reply, we resume after dispatching the - // reply. We know that dispatching a reply is bounded and will - // not affect the concurrency at any point. - // @@ todo: need to think what do we win by doing this - // here. Anyway, when the handle_input_i () returns we should be - // fine, right? - rh.resume_handle (); } else if (t == TAO_PLUGGABLE_MESSAGE_MESSAGERROR) { |