summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Huston <shuston@riverace.com>2000-09-05 17:42:10 +0000
committerSteve Huston <shuston@riverace.com>2000-09-05 17:42:10 +0000
commitad2156766e2fc2b5d597fcb55ca8df53ccfea6a8 (patch)
tree459f84508c3ccf122a57bc5968acd4df450ebcf2
parent3c6c512aba9fc45480e9b4ab1edfaeadcfaccf67 (diff)
downloadATCD-ad2156766e2fc2b5d597fcb55ca8df53ccfea6a8.tar.gz
ChangeLogTag:Tue Sep 05 13:34:26 2000 Steve Huston <shuston@riverace.com>
-rw-r--r--ace/TP_Reactor.cpp16
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;