#include <ace/Event_Handler.h>
class ACE_Event_Handler {
public:
enum{ LO_PRIORITY = 0, HI_PRIORITY = 10, NULL_MASK = 0, #if defined ( ACE_USE_POLL) READ_MASK = POLLIN, WRITE_MASK = POLLOUT, EXCEPT_MASK = POLLPRI, #else READ_MASK = (1 << 0), WRITE_MASK = (1 << 1), EXCEPT_MASK = (1 << 2), #endif ACCEPT_MASK = (1 << 3), CONNECT_MASK = (1 << 4), TIMER_MASK = (1 << 5), QOS_MASK = (1 << 6), GROUP_QOS_MASK = (1 << 7), SIGNAL_MASK = (1 << 8), ALL_EVENTS_MASK = READ_MASK | WRITE_MASK | EXCEPT_MASK | ACCEPT_MASK | CONNECT_MASK | TIMER_MASK | QOS_MASK | GROUP_QOS_MASK | SIGNAL_MASK, RWE_MASK = READ_MASK | WRITE_MASK | EXCEPT_MASK, DONT_CALL = (1 << 9) };
virtual ~ACE_Event_Handler (void);
virtual ACE_HANDLE get_handle (void) const;
virtual void set_handle (ACE_HANDLE);
virtual int priority (void) const;
virtual void priority (int priority);
virtual int handle_input (ACE_HANDLE fd = ACE_INVALID_HANDLE);
virtual int handle_output (ACE_HANDLE fd = ACE_INVALID_HANDLE);
virtual int handle_exception (ACE_HANDLE fd = ACE_INVALID_HANDLE);
virtual int handle_timeout ( const ACE_Time_Value &tv, const void *arg = 0 );
virtual int handle_exit (ACE_Process *);
virtual int handle_close ( ACE_HANDLE handle, ACE_Reactor_Mask close_mask );
virtual int handle_signal ( int signum, siginfo_t * = 0, ucontext_t * = 0 );
virtual int handle_qos (ACE_HANDLE = ACE_INVALID_HANDLE);
virtual int handle_group_qos (ACE_HANDLE = ACE_INVALID_HANDLE);
virtual void reactor (ACE_Reactor *reactor);
virtual ACE_Reactor *reactor (void) const;
static void *read_adapter (void *event_handler);
static int register_stdin_handler ( ACE_Event_Handler *eh, ACE_Reactor *reactor, ACE_Thread_Manager *thr_mgr, int flags = THR_DETACHED );
static int remove_stdin_handler ( ACE_Reactor *reactor, ACE_Thread_Manager *thr_mgr );
protected:
ACE_Event_Handler ( ACE_Reactor * = 0, int priority = ACE_Event_Handler::LO_PRIORITY );
private:
int priority_;
ACE_Reactor *reactor_;
};
virtual int priority (void) const;
virtual void priority (int priority);
virtual int handle_input (ACE_HANDLE fd = ACE_INVALID_HANDLE);
virtual int handle_output (ACE_HANDLE fd = ACE_INVALID_HANDLE);
virtual int handle_exception (ACE_HANDLE fd = ACE_INVALID_HANDLE);
virtual int handle_timeout (
const ACE_Time_Value &tv,
const void *arg = 0
);
virtual int handle_exit (ACE_Process *);
virtual int handle_close (
ACE_HANDLE handle,
ACE_Reactor_Mask close_mask
);
ACE_Reactor
.
virtual int handle_signal (
int signum,
siginfo_t * = 0,
ucontext_t * = 0
);
virtual int handle_qos (ACE_HANDLE = ACE_INVALID_HANDLE);
virtual int handle_group_qos (ACE_HANDLE = ACE_INVALID_HANDLE);
virtual void reactor (ACE_Reactor *reactor);
virtual ACE_Reactor *reactor (void) const;
static void *read_adapter (void *event_handler);
select
on
non-sockets (such as ACE_STDIN). This is commonly used in
situations where the Reactor is used to demultiplex read events
on ACE_STDIN on UNIX. Note that event_handler
must be a
subclass of ACE_Event_Handler
. If the get_handle
method of
this event handler returns ACE_INVALID_HANDLE
we default to
reading from ACE_STDIN.
static int register_stdin_handler (
ACE_Event_Handler *eh,
ACE_Reactor *reactor,
ACE_Thread_Manager *thr_mgr,
int flags = THR_DETACHED
);
select
'able on
Win32.
static int remove_stdin_handler (
ACE_Reactor *reactor,
ACE_Thread_Manager *thr_mgr
);
register_stdin_handler
method.
ACE_Reactor *reactor_;
schmidt@cs.wustl.edu