NAME

ACE_Reactor - The resposiblility of this class is to forward all methods to its delegation/implementation class, e.g., ACE_Select_Reactor or ACE_WFMO_Reactor.

SYNOPSIS

#include <ace/Reactor.h>

class ACE_Reactor { public: enum{ GET_MASK = 1, SET_MASK = 2, ADD_MASK = 3, CLR_MASK = 4 }; typedef int (*REACTOR_EVENT_HOOK)(void*); static ACE_Reactor *instance (void); static ACE_Reactor *instance ( ACE_Reactor *, int delete_reactor = 0 ); static void close_singleton (void); static int run_event_loop (void); static int run_alertable_event_loop (void); static int run_event_loop (ACE_Time_Value &tv); static int run_alertable_event_loop (ACE_Time_Value &tv); static int end_event_loop (void); static int event_loop_done (void); static void reset_event_loop (void); static int check_reconfiguration (void *); virtual int run_reactor_event_loop (REACTOR_EVENT_HOOK = 0); virtual int run_alertable_reactor_event_loop ( REACTOR_EVENT_HOOK = 0 ); virtual int run_reactor_event_loop ( ACE_Time_Value &tv, REACTOR_EVENT_HOOK = 0 ); virtual int run_alertable_reactor_event_loop ( ACE_Time_Value &tv, REACTOR_EVENT_HOOK = 0 ); virtual int end_reactor_event_loop (void); virtual int reactor_event_loop_done (void); virtual void reset_reactor_event_loop (void); ACE_Reactor ( ACE_Reactor_Impl *implementation = 0, int delete_implementation = 0 ); virtual ~ACE_Reactor (void); virtual int open ( size_t max_number_of_handles, int restart = 0, ACE_Sig_Handler *signal_handler = 0, ACE_Timer_Queue *timer_queue = 0 ); virtual int set_sig_handler (ACE_Sig_Handler *signal_handler); virtual int set_timer_queue (ACE_Timer_Queue *timer_queue); virtual int close (void); virtual int work_pending ( const ACE_Time_Value &max_wait_time = ACE_Time_Value::zero ); virtual int handle_events (ACE_Time_Value *max_wait_time = 0); virtual int alertable_handle_events ( ACE_Time_Value *max_wait_time = 0 ); virtual int handle_events (ACE_Time_Value &max_wait_time); virtual int alertable_handle_events ( ACE_Time_Value &max_wait_time ); virtual int register_handler ( ACE_Event_Handler *event_handler, ACE_Reactor_Mask mask ); virtual int register_handler ( ACE_HANDLE io_handle, ACE_Event_Handler *event_handler, ACE_Reactor_Mask mask ); virtual int register_handler ( ACE_Event_Handler *event_handler, ACE_HANDLE event_handle = ACE_INVALID_HANDLE ); virtual int register_handler ( ACE_HANDLE event_handle, ACE_HANDLE io_handle, ACE_Event_Handler *event_handler, ACE_Reactor_Mask mask ); virtual int register_handler ( const ACE_Handle_Set &handles, ACE_Event_Handler *event_handler, ACE_Reactor_Mask mask ); virtual int register_handler ( int signum, ACE_Event_Handler *new_sh, ACE_Sig_Action *new_disp = 0, ACE_Event_Handler **old_sh = 0, ACE_Sig_Action *old_disp = 0 ); virtual int register_handler ( const ACE_Sig_Set &sigset, ACE_Event_Handler *new_sh, ACE_Sig_Action *new_disp = 0 ); virtual int remove_handler ( ACE_Event_Handler *event_handler, ACE_Reactor_Mask mask ); virtual int remove_handler ( ACE_HANDLE handle, ACE_Reactor_Mask mask ); virtual int remove_handler ( const ACE_Handle_Set &handle_set, ACE_Reactor_Mask mask ); virtual int remove_handler ( int signum, ACE_Sig_Action *new_disp, ACE_Sig_Action *old_disp = 0, int sigkey = -1 ); virtual int remove_handler (const ACE_Sig_Set &sigset); virtual int suspend_handler (ACE_Event_Handler *event_handler); virtual int suspend_handler (ACE_HANDLE handle); virtual int suspend_handler (const ACE_Handle_Set &handles); virtual int suspend_handlers (void); virtual int resume_handler (ACE_Event_Handler *event_handler); virtual int resume_handler (ACE_HANDLE handle); virtual int resume_handler (const ACE_Handle_Set &handles); virtual int resume_handlers (void); virtual long schedule_timer ( ACE_Event_Handler *event_handler, const void *arg, const ACE_Time_Value &delta, const ACE_Time_Value &interval = ACE_Time_Value::zero ); virtual int reset_timer_interval ( long timer_id, const ACE_Time_Value &interval ); virtual int cancel_timer ( ACE_Event_Handler *event_handler, int dont_call_handle_close = 1 ); virtual int cancel_timer ( long timer_id, const void **arg = 0, int dont_call_handle_close = 1 ); virtual int schedule_wakeup ( ACE_Event_Handler *event_handler, ACE_Reactor_Mask masks_to_be_added ); virtual int schedule_wakeup ( ACE_HANDLE handle, ACE_Reactor_Mask masks_to_be_added ); virtual int cancel_wakeup ( ACE_Event_Handler *event_handler, ACE_Reactor_Mask masks_to_be_cleared ); virtual int cancel_wakeup ( ACE_HANDLE handle, ACE_Reactor_Mask masks_to_be_cleared ); virtual int notify ( ACE_Event_Handler *event_handler = 0, ACE_Reactor_Mask mask = ACE_Event_Handler::EXCEPT_MASK, ACE_Time_Value *tv = 0 ); virtual void max_notify_iterations (int iterations); virtual int max_notify_iterations (void); virtual int handler ( ACE_HANDLE handle, ACE_Reactor_Mask mask, ACE_Event_Handler **event_handler = 0 ); virtual int handler ( int signum, ACE_Event_Handler **event_handler = 0 ); virtual int initialized (void); virtual size_t size (void); virtual ACE_Lock &lock (void); virtual void wakeup_all_threads (void); virtual int owner ( ACE_thread_t new_owner, ACE_thread_t *old_owner = 0 ); virtual int owner (ACE_thread_t *owner); virtual void requeue_position (int position); virtual int requeue_position (void); virtual int restart (void); virtual int restart (int r); virtual int mask_ops ( ACE_Event_Handler *event_handler, ACE_Reactor_Mask mask, int ops ); virtual int mask_ops ( ACE_HANDLE handle, ACE_Reactor_Mask mask, int ops ); virtual int ready_ops ( ACE_Event_Handler *event_handler, ACE_Reactor_Mask mask, int ops ); virtual int ready_ops ( ACE_HANDLE handle, ACE_Reactor_Mask mask, int ops ); virtual ACE_Reactor_Impl *implementation (void); virtual int current_info (ACE_HANDLE handle, size_t &msg_size); virtual int uses_event_associations (void); ACE_ALLOC_HOOK_DECLARE; void dump (void) const; protected: virtual void implementation (ACE_Reactor_Impl *implementation); ACE_Reactor_Impl *implementation_; int delete_implementation_; static ACE_Reactor *reactor_; static int delete_reactor_; ACE_Reactor (const ACE_Reactor &); ACE_Reactor &operator = (const ACE_Reactor &); };

Singleton reactor event loop management methods.

Note that these method ONLY work on the "Singleton Reactor," i.e., the one returned from ACE_Reactor::instance.
static int run_event_loop (void);

static int run_alertable_event_loop (void);

static int run_event_loop (ACE_Time_Value &tv);

static int run_alertable_event_loop (ACE_Time_Value &tv);

static int end_event_loop (void);

static int event_loop_done (void);

static void reset_event_loop (void);

static int check_reconfiguration (void *);

Reactor event loop management methods.

These methods work with an instance of a reactor.
virtual int run_reactor_event_loop (REACTOR_EVENT_HOOK = 0);

virtual int run_alertable_reactor_event_loop (REACTOR_EVENT_HOOK = 0);

virtual int run_reactor_event_loop (
    ACE_Time_Value &tv,
    REACTOR_EVENT_HOOK = 0
    );

virtual int run_alertable_reactor_event_loop (
    ACE_Time_Value &tv,
    REACTOR_EVENT_HOOK = 0
    );

virtual int end_reactor_event_loop (void);

virtual int reactor_event_loop_done (void);

virtual void reset_reactor_event_loop (void);

ACE_Reactor (
    ACE_Reactor_Impl *implementation = 0,
    int delete_implementation = 0
    );

virtual ~ACE_Reactor (void);

virtual int open (
    size_t max_number_of_handles,
    int restart = 0,
    ACE_Sig_Handler *signal_handler = 0,
    ACE_Timer_Queue *timer_queue = 0
    );

virtual int set_sig_handler (ACE_Sig_Handler *signal_handler);

virtual int set_timer_queue (ACE_Timer_Queue *timer_queue);

virtual int close (void);

Event loop drivers.

virtual int work_pending (
    const ACE_Time_Value &max_wait_time = ACE_Time_Value::zero
    );

virtual int handle_events (ACE_Time_Value *max_wait_time = 0);

virtual int alertable_handle_events (
    ACE_Time_Value *max_wait_time = 0
    );

virtual int handle_events (ACE_Time_Value &max_wait_time);

virtual int alertable_handle_events (ACE_Time_Value &max_wait_time);

Register and remove Handlers.

virtual int register_handler (
    ACE_Event_Handler *event_handler,
    ACE_Reactor_Mask mask
    );

virtual int register_handler (
    ACE_HANDLE io_handle,
    ACE_Event_Handler *event_handler,
    ACE_Reactor_Mask mask
    );

virtual int register_handler (
    ACE_Event_Handler *event_handler,
    ACE_HANDLE event_handle = ACE_INVALID_HANDLE
    );

virtual int register_handler (
    ACE_HANDLE event_handle,
    ACE_HANDLE io_handle,
    ACE_Event_Handler *event_handler,
    ACE_Reactor_Mask mask
    );

virtual int register_handler (
    const ACE_Handle_Set &handles,
    ACE_Event_Handler *event_handler,
    ACE_Reactor_Mask mask
    );

virtual int register_handler (
    int signum,
    ACE_Event_Handler *new_sh,
    ACE_Sig_Action *new_disp = 0,
    ACE_Event_Handler **old_sh = 0,
    ACE_Sig_Action *old_disp = 0
    );

virtual int register_handler (
    const ACE_Sig_Set &sigset,
    ACE_Event_Handler *new_sh,
    ACE_Sig_Action *new_disp = 0
    );

virtual int remove_handler (
    ACE_Event_Handler *event_handler,
    ACE_Reactor_Mask mask
    );

virtual int remove_handler (ACE_HANDLE handle, ACE_Reactor_Mask mask);

virtual int remove_handler (
    const ACE_Handle_Set &handle_set,
    ACE_Reactor_Mask mask
    );

virtual int remove_handler (
    int signum,
    ACE_Sig_Action *new_disp,
    ACE_Sig_Action *old_disp = 0,
    int sigkey = -1
    );

virtual int remove_handler (const ACE_Sig_Set &sigset);

Suspend and resume Handlers.

virtual int suspend_handler (ACE_Event_Handler *event_handler);

virtual int suspend_handler (ACE_HANDLE handle);

virtual int suspend_handler (const ACE_Handle_Set &handles);

virtual int suspend_handlers (void);

virtual int resume_handler (ACE_Event_Handler *event_handler);

virtual int resume_handler (ACE_HANDLE handle);

virtual int resume_handler (const ACE_Handle_Set &handles);

virtual int resume_handlers (void);

Timer management.

virtual long schedule_timer (
    ACE_Event_Handler *event_handler,
    const void *arg,
    const ACE_Time_Value &delta,
    const ACE_Time_Value &interval = ACE_Time_Value::zero
    );

virtual int reset_timer_interval (
    long timer_id,
    const ACE_Time_Value &interval
    );

virtual int cancel_timer (
    ACE_Event_Handler *event_handler,
    int dont_call_handle_close = 1
    );

virtual int cancel_timer (
    long timer_id,
    const void **arg = 0,
    int dont_call_handle_close = 1
    );

High-level Event_Handler scheduling operations

virtual int schedule_wakeup (
    ACE_Event_Handler *event_handler,
    ACE_Reactor_Mask masks_to_be_added
    );

virtual int schedule_wakeup (
    ACE_HANDLE handle,
    ACE_Reactor_Mask masks_to_be_added
    );

virtual int cancel_wakeup (
    ACE_Event_Handler *event_handler,
    ACE_Reactor_Mask masks_to_be_cleared
    );

virtual int cancel_wakeup (
    ACE_HANDLE handle,
    ACE_Reactor_Mask masks_to_be_cleared
    );

Notification methods.

virtual int notify (
    ACE_Event_Handler *event_handler = 0,
    ACE_Reactor_Mask mask = ACE_Event_Handler::EXCEPT_MASK,
    ACE_Time_Value *tv = 0
    );

virtual void max_notify_iterations (int iterations);

virtual int max_notify_iterations (void);

Assorted helper methods.

virtual int handler (
    ACE_HANDLE handle,
    ACE_Reactor_Mask mask,
    ACE_Event_Handler **event_handler = 0
    );

virtual int handler (
    int signum,
    ACE_Event_Handler **event_handler = 0
    );

virtual int initialized (void);

virtual size_t size (void);

virtual ACE_Lock &lock (void);

virtual void wakeup_all_threads (void);

virtual int owner (
    ACE_thread_t new_owner,
    ACE_thread_t *old_owner = 0
    );

virtual int owner (ACE_thread_t *owner);

virtual void requeue_position (int position);

virtual int requeue_position (void);

virtual int restart (void);

virtual int restart (int r);

Low-level wait_set mask manipulation methods.

virtual int mask_ops (
    ACE_Event_Handler *event_handler,
    ACE_Reactor_Mask mask,
    int ops
    );

virtual int mask_ops (
    ACE_HANDLE handle,
    ACE_Reactor_Mask mask,
    int ops
    );

Low-level ready_set mask manipulation methods.

virtual int ready_ops (
    ACE_Event_Handler *event_handler,
    ACE_Reactor_Mask mask,
    int ops
    );

virtual int ready_ops (
    ACE_HANDLE handle,
    ACE_Reactor_Mask mask,
    int ops
    );

virtual ACE_Reactor_Impl *implementation (void);

virtual int current_info (ACE_HANDLE handle, size_t &msg_size);

virtual int uses_event_associations (void);

ACE_ALLOC_HOOK_DECLARE;

void dump (void) const;

AUTHOR

Irfan Pyarali

LIBRARY

ace