diff options
author | Steve Huston <shuston@riverace.com> | 2000-09-05 17:42:10 +0000 |
---|---|---|
committer | Steve Huston <shuston@riverace.com> | 2000-09-05 17:42:10 +0000 |
commit | ad2156766e2fc2b5d597fcb55ca8df53ccfea6a8 (patch) | |
tree | 459f84508c3ccf122a57bc5968acd4df450ebcf2 | |
parent | 3c6c512aba9fc45480e9b4ab1edfaeadcfaccf67 (diff) | |
download | ATCD-ad2156766e2fc2b5d597fcb55ca8df53ccfea6a8.tar.gz |
ChangeLogTag:Tue Sep 05 13:34:26 2000 Steve Huston <shuston@riverace.com>
-rw-r--r-- | ace/TP_Reactor.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/ace/TP_Reactor.cpp b/ace/TP_Reactor.cpp index 24ccc148e16..886e07aacec 100644 --- a/ace/TP_Reactor.cpp +++ b/ace/TP_Reactor.cpp @@ -199,6 +199,16 @@ ACE_TP_Reactor::dispatch_i (ACE_Time_Value *max_wait_time, this->ready_set_.ex_mask_.reset (); this->state_changed_ = 0; } + else + { + // This is a hack... somewhere, under certain conditions (which + // I don't understand...) the mask will have all of its bits clear, + // yet have a size_ > 0. This is an attempt to remedy the affect, + // without knowing why it happens. + this->ready_set_.rd_mask_.sync (this->ready_set_.rd_mask_.max_set ()); + this->ready_set_.wr_mask_.sync (this->ready_set_.wr_mask_.max_set ()); + this->ready_set_.ex_mask_.sync (this->ready_set_.ex_mask_.max_set ()); + } int active_handle_count = this->wait_for_multiple_events (this->ready_set_, max_wait_time); @@ -277,7 +287,7 @@ ACE_TP_Reactor::dispatch_i (ACE_Time_Value *max_wait_time, { ACE_Handle_Set_Iterator handle_iter (this->ready_set_.wr_mask_); - while ((handle = handle_iter ()) != ACE_INVALID_HANDLE && !found_io) + while (!found_io && (handle = handle_iter ()) != ACE_INVALID_HANDLE) { if (this->is_suspended_i (handle)) continue; @@ -298,7 +308,7 @@ ACE_TP_Reactor::dispatch_i (ACE_Time_Value *max_wait_time, { ACE_Handle_Set_Iterator handle_iter (this->ready_set_.ex_mask_); - while ((handle = handle_iter ()) != ACE_INVALID_HANDLE && !found_io) + while (!found_io && (handle = handle_iter ()) != ACE_INVALID_HANDLE) { if (this->is_suspended_i (handle)) continue; @@ -319,7 +329,7 @@ ACE_TP_Reactor::dispatch_i (ACE_Time_Value *max_wait_time, { ACE_Handle_Set_Iterator handle_iter (this->ready_set_.rd_mask_); - while ((handle = handle_iter ()) != ACE_INVALID_HANDLE && !found_io) + while (!found_io && (handle = handle_iter ()) != ACE_INVALID_HANDLE) { if (this->is_suspended_i (handle)) continue; |