diff options
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | ChangeLogs/ChangeLog-02a | 3 | ||||
-rw-r--r-- | ChangeLogs/ChangeLog-03a | 3 | ||||
-rw-r--r-- | ace/TP_Reactor.cpp | 20 | ||||
-rw-r--r-- | ace/TP_Reactor.h | 2 |
5 files changed, 31 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index 2416f15a40e..d3922b5a8f8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ Thu Jan 13 20:11:55 2000 Irfan Pyarali <irfan@cs.wustl.edu> + * ace/TP_Reactor.cpp (work_pending): This version is similar to + the select reactor except there is no owner check. + * ace/Select_Reactor_T.cpp (work_pending): The handle set must be copied before calling select(). diff --git a/ChangeLogs/ChangeLog-02a b/ChangeLogs/ChangeLog-02a index 2416f15a40e..d3922b5a8f8 100644 --- a/ChangeLogs/ChangeLog-02a +++ b/ChangeLogs/ChangeLog-02a @@ -1,5 +1,8 @@ Thu Jan 13 20:11:55 2000 Irfan Pyarali <irfan@cs.wustl.edu> + * ace/TP_Reactor.cpp (work_pending): This version is similar to + the select reactor except there is no owner check. + * ace/Select_Reactor_T.cpp (work_pending): The handle set must be copied before calling select(). diff --git a/ChangeLogs/ChangeLog-03a b/ChangeLogs/ChangeLog-03a index 2416f15a40e..d3922b5a8f8 100644 --- a/ChangeLogs/ChangeLog-03a +++ b/ChangeLogs/ChangeLog-03a @@ -1,5 +1,8 @@ Thu Jan 13 20:11:55 2000 Irfan Pyarali <irfan@cs.wustl.edu> + * ace/TP_Reactor.cpp (work_pending): This version is similar to + the select reactor except there is no owner check. + * ace/Select_Reactor_T.cpp (work_pending): The handle set must be copied before calling select(). diff --git a/ace/TP_Reactor.cpp b/ace/TP_Reactor.cpp index f8b0bca927b..ef21a298a00 100644 --- a/ace/TP_Reactor.cpp +++ b/ace/TP_Reactor.cpp @@ -109,6 +109,26 @@ ACE_TP_Reactor::dispatch_io_set (int number_of_active_handles, } int +ACE_TP_Reactor::work_pending (const ACE_Time_Value &timeout) +{ + ACE_MT (ACE_GUARD_RETURN (ACE_Select_Reactor_Token, + ace_mon, this->token_, -1)); + + u_long width = (u_long) this->handler_rep_.max_handlep1 (); + + ACE_Select_Reactor_Handle_Set fd_set; + fd_set.rd_mask_ = this->wait_set_.rd_mask_; + fd_set.wr_mask_ = this->wait_set_.wr_mask_; + fd_set.ex_mask_ = this->wait_set_.ex_mask_; + + return ACE_OS::select (int (width), + fd_set.rd_mask_, + fd_set.wr_mask_, + fd_set.ex_mask_, + timeout); +} + +int ACE_TP_Reactor::handle_events (ACE_Time_Value *max_wait_time) { ACE_TRACE ("ACE_TP_Reactor::handle_events"); diff --git a/ace/TP_Reactor.h b/ace/TP_Reactor.h index 6a093d872ce..21962cf8164 100644 --- a/ace/TP_Reactor.h +++ b/ace/TP_Reactor.h @@ -143,6 +143,8 @@ public: virtual int handle_events (ACE_Time_Value &max_wait_time); + virtual int work_pending (const ACE_Time_Value &timeout); + virtual int mask_ops (ACE_Event_Handler *eh, ACE_Reactor_Mask mask, int ops); |