Select_Reactor
using various locking mechanism.
#include <ace/Select_Reactor_Base.h>
class ACE_Select_Reactor_Impl : public ACE_Reactor_Impl {
public:
enum{ DEFAULT_SIZE = ACE_DEFAULT_SELECT_REACTOR_SIZE };
ACE_Select_Reactor_Impl (void);
friend class ACE_Select_Reactor_Notify;
friend class ACE_Select_Reactor_Handler_Repository;
protected:
virtual int bit_ops ( ACE_HANDLE handle, ACE_Reactor_Mask mask, ACE_Select_Reactor_Handle_Set &wait_Set, int ops );
virtual void renew (void) = 0;
ACE_Select_Reactor_Handler_Repository handler_rep_;
ACE_Select_Reactor_Handle_Set wait_set_;
ACE_Select_Reactor_Handle_Set suspend_set_;
ACE_Select_Reactor_Handle_Set ready_set_;
ACE_Timer_Queue *timer_queue_;
int delete_timer_queue_;
ACE_Sig_Handler *signal_handler_;
int delete_signal_handler_;
ACE_Reactor_Notify *notify_handler_;
int delete_notify_handler_;
int restart_;
int requeue_position_;
int initialized_;
ACE_thread_t owner_;
int state_changed_;
int supress_notify_renew (void);
void supress_notify_renew (int sr);
private:
int supress_renew_;
ACE_Select_Reactor_Impl (const ACE_Select_Reactor_Impl &);
ACE_Select_Reactor_Impl &operator = ( const ACE_Select_Reactor_Impl & );
};
ACE_Select_Reactor_Impl (void);
friend class ACE_Select_Reactor_Notify;
friend class ACE_Select_Reactor_Handler_Repository;
virtual int bit_ops (
ACE_HANDLE handle,
ACE_Reactor_Mask mask,
ACE_Select_Reactor_Handle_Set &wait_Set,
int ops
);
wait_set_
mask and ready_set_
mask.
virtual void renew (void) = 0;
requeue_position_
.
ACE_Select_Reactor_Handler_Repository handler_rep_;
ACE_HANDLEs
to ACE_Event_Handler *
's.
ACE_Select_Reactor_Handle_Set wait_set_;
select
.
ACE_Select_Reactor_Handle_Set suspend_set_;
ACE_Select_Reactor_Handle_Set ready_set_;
select
.
ACE_Timer_Queue *timer_queue_;
int delete_timer_queue_;
ACE_Sig_Handler *signal_handler_;
int delete_signal_handler_;
ACE_Reactor_Notify *notify_handler_;
ACE_Select_Reactor
if it's
sleeping.
int delete_notify_handler_;
int restart_;
handle_events
event-loop method automatically when
select
is interrupted via EINTR
.
int requeue_position_;
notify
callback. If this value ==
-1 we are requeued at the end of the list. Else if it's 0 then
we are requeued at the front of the list. Else if it's 1 then
that indicates the number of waiters to skip over.
int initialized_;
ACE_thread_t owner_;
int state_changed_;
ACE_Event_Handlers
, else false. This is used to determine
whether we need to make another trip through the
Select_Reactor
's wait_for_multiple_events
loop.
int supress_notify_renew (void);
void supress_notify_renew (int sr);
int supress_renew_;
ACE_Select_Reactor_Impl (const ACE_Select_Reactor_Impl &);
ACE_Select_Reactor_Impl &operator = (const ACE_Select_Reactor_Impl &);