Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

ACE_Event_Handler Class Reference

Provides an abstract interface for handling various types of I/O, timer, and signal events. More...

#include <Event_Handler.h>

Inheritance diagram for ACE_Event_Handler:

Inheritance graph
[legend]
Collaboration diagram for ACE_Event_Handler:

Collaboration graph
[legend]
List of all members.

Public Types

enum  {
  LO_PRIORITY = 0, HI_PRIORITY = 10, NULL_MASK = 0, READ_MASK = (1 << 0),
  WRITE_MASK = (1 << 1), EXCEPT_MASK = (1 << 2), 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, RWE_MASK, DONT_CALL = (1 << 9)
}
enum  { ACE_REACTOR_RESUMES_HANDLER = 0, ACE_APPLICATION_RESUMES_HANDLER }

Public Methods

virtual ~ACE_Event_Handler (void)
 Destructor is virtual to enable proper cleanup. More...

virtual ACE_HANDLE get_handle (void) const
 Get the I/O handle. More...

virtual void set_handle (ACE_HANDLE)
 Set the I/O handle. More...

virtual int priority (void) const
 Get the priority of the Event_Handler. More...

virtual void priority (int priority)
 Set the priority of the Event_Handler. More...

virtual int handle_input (ACE_HANDLE fd=ACE_INVALID_HANDLE)
 Called when input events occur (e.g., connection or data). More...

virtual int handle_output (ACE_HANDLE fd=ACE_INVALID_HANDLE)
 Called when output events are possible (e.g., when flow control abates or non-blocking connection completes). More...

virtual int handle_exception (ACE_HANDLE fd=ACE_INVALID_HANDLE)
 Called when an exceptional events occur (e.g., SIGURG). More...

virtual int handle_timeout (const ACE_Time_Value &current_time, const void *act=0)
 Called when timer expires. More...

virtual int handle_exit (ACE_Process *)
 Called when a process exits. More...

virtual int handle_close (ACE_HANDLE handle, ACE_Reactor_Mask close_mask)
 Called when a <handle_*()> method returns -1 or when the <remove_handler> method is called on an <ACE_Reactor>. The <close_mask> indicates which event has triggered the <handle_close> method callback on a particular <handle>. More...

virtual int handle_signal (int signum, siginfo_t *=0, ucontext_t *=0)
 Called when object is signaled by OS (either via UNIX signals or when a Win32 object becomes signaled). More...

virtual int resume_handler (void)
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)
 Set the event demultiplexors. More...

virtual ACE_Reactorreactor (void) const
 Get the event demultiplexors. More...


Static Public Methods

ACE_THR_FUNC_RETURN read_adapter (void *event_handler)
 Used to read from non-socket ACE_HANDLEs in our own thread to work around Win32 limitations that don't allow us to <select> on non-sockets (such as ACE_STDIN). More...

int register_stdin_handler (ACE_Event_Handler *eh, ACE_Reactor *reactor, ACE_Thread_Manager *thr_mgr, int flags=THR_DETACHED)
 Abstracts away from the differences between Win32 and ACE with respect to reading from ACE_STDIN, which is non-<select>'able on Win32. More...

int remove_stdin_handler (ACE_Reactor *reactor, ACE_Thread_Manager *thr_mgr)
 Performs the inverse of the <register_stdin_handler> method. More...


Protected Methods

 ACE_Event_Handler (ACE_Reactor *=0, int priority=ACE_Event_Handler::LO_PRIORITY)
 Force ACE_Event_Handler to be an abstract base class. More...


Private Attributes

int priority_
 Priority of this Event_Handler. More...

ACE_Reactorreactor_
 Pointer to the various event demultiplexors. More...


Detailed Description

Provides an abstract interface for handling various types of I/O, timer, and signal events.

Subclasses read/write input/output on an I/O descriptor, handle an exception raised on an I/O descriptor, handle a timer's expiration, or handle a signal.


Member Enumeration Documentation

anonymous enum
 

Enumeration values:
LO_PRIORITY 
HI_PRIORITY 
NULL_MASK 
READ_MASK 
WRITE_MASK 
EXCEPT_MASK 
ACCEPT_MASK 
CONNECT_MASK 
TIMER_MASK 
QOS_MASK 
GROUP_QOS_MASK 
SIGNAL_MASK 
ALL_EVENTS_MASK 
RWE_MASK 
DONT_CALL 

anonymous enum
 

Enumeration values:
ACE_REACTOR_RESUMES_HANDLER 
ACE_APPLICATION_RESUMES_HANDLER 


Constructor & Destructor Documentation

ACE_Event_Handler::~ACE_Event_Handler void    [virtual]
 

Destructor is virtual to enable proper cleanup.

ACE_Event_Handler::ACE_Event_Handler ACE_Reactor   r = 0,
int    p = ACE_Event_Handler::LO_PRIORITY
[protected]
 

Force ACE_Event_Handler to be an abstract base class.


Member Function Documentation

ACE_HANDLE ACE_Event_Handler::get_handle void    const [virtual]
 

Get the I/O handle.

Reimplemented in ACE_Acceptor, ACE_Strategy_Acceptor, ACE_Oneshot_Acceptor, ACE_Name_Proxy, ACE_POSIX_Asynch_Accept, ACE_POSIX_Asynch_Connect, ACE_POSIX_Proactor, ACE_Proactor_Impl, ACE_Service_Manager, ACE_Svc_Handler, ACE_WFMO_Reactor_Notify, ACE_WIN32_Asynch_Connect, ACE_WIN32_Proactor, ACE_Acceptor< SVC_HANDLER, ACE_PEER_ACCEPTOR_2 >, and ACE_Svc_Handler< ACE_PEER_STREAM_2, ACE_SYNCH_USE >.

int ACE_Event_Handler::handle_close ACE_HANDLE    handle,
ACE_Reactor_Mask    close_mask
[virtual]
 

Called when a <handle_*()> method returns -1 or when the <remove_handler> method is called on an <ACE_Reactor>. The <close_mask> indicates which event has triggered the <handle_close> method callback on a particular <handle>.

Reimplemented in ACE_Acceptor, ACE_Strategy_Acceptor, ACE_Oneshot_Acceptor, ACE_Connector, ACE_POSIX_Asynch_Accept, ACE_POSIX_Asynch_Connect, ACE_Service_Manager, ACE_Svc_Handler, ACE_WIN32_Asynch_Connect, ACE_WIN32_Proactor, ACE_Acceptor< SVC_HANDLER, ACE_PEER_ACCEPTOR_2 >, ACE_Connector< SVC_HANDLER, ACE_PEER_CONNECTOR_2 >, and ACE_Svc_Handler< ACE_PEER_STREAM_2, ACE_SYNCH_USE >.

int ACE_Event_Handler::handle_exception ACE_HANDLE    fd = ACE_INVALID_HANDLE [virtual]
 

Called when an exceptional events occur (e.g., SIGURG).

Reimplemented in ACE_Connector, ACE_POSIX_Asynch_Connect, ACE_WIN32_Asynch_Connect, and ACE_Connector< SVC_HANDLER, ACE_PEER_CONNECTOR_2 >.

int ACE_Event_Handler::handle_exit ACE_Process   [virtual]
 

Called when a process exits.

int ACE_Event_Handler::handle_group_qos ACE_HANDLE    = ACE_INVALID_HANDLE [virtual]
 

int ACE_Event_Handler::handle_input ACE_HANDLE    fd = ACE_INVALID_HANDLE [virtual]
 

Called when input events occur (e.g., connection or data).

Reimplemented in ACE_Acceptor, ACE_Oneshot_Acceptor, ACE_Connector, ACE_POSIX_Asynch_Accept, ACE_POSIX_Asynch_Connect, ACE_Select_Reactor_Notify, ACE_Service_Manager, ACE_WIN32_Asynch_Connect, ACE_Acceptor< SVC_HANDLER, ACE_PEER_ACCEPTOR_2 >, and ACE_Connector< SVC_HANDLER, ACE_PEER_CONNECTOR_2 >.

int ACE_Event_Handler::handle_output ACE_HANDLE    fd = ACE_INVALID_HANDLE [virtual]
 

Called when output events are possible (e.g., when flow control abates or non-blocking connection completes).

Reimplemented in ACE_Connector, ACE_POSIX_Asynch_Connect, ACE_WIN32_Asynch_Connect, and ACE_Connector< SVC_HANDLER, ACE_PEER_CONNECTOR_2 >.

int ACE_Event_Handler::handle_qos ACE_HANDLE    = ACE_INVALID_HANDLE [virtual]
 

int ACE_Event_Handler::handle_signal int    signum,
siginfo_t   siginfo = 0,
ucontext_t   ucontext = 0
[virtual]
 

Called when object is signaled by OS (either via UNIX signals or when a Win32 object becomes signaled).

Reimplemented in ACE_Strategy_Acceptor, ACE_Shared_Memory_Pool, ACE_MMAP_Memory_Pool, ACE_Process_Manager, ACE_Service_Manager, ACE_Sig_Adapter, ACE_Test_and_Set, ACE_Async_Timer_Queue_Adapter, ACE_Wakeup_All_Threads_Handler, ACE_WFMO_Reactor_Notify, and ACE_WIN32_Proactor.

int ACE_Event_Handler::handle_timeout const ACE_Time_Value   time,
const void *    arg = 0
[virtual]
 

Called when timer expires.

<current_time> represents the current time that the <Event_Handler> was selected for timeout dispatching and <act> is the asynchronous completion token that was passed in when <schedule_timer> was invoked.

Reimplemented in ACE_Oneshot_Acceptor, ACE_Connector, ACE_Logging_Strategy, ACE_Svc_Handler, ACE_Buffered_Svc_Handler, ACE_Connector< SVC_HANDLER, ACE_PEER_CONNECTOR_2 >, and ACE_Svc_Handler< ACE_PEER_STREAM_2, ACE_SYNCH_USE >.

void ACE_Event_Handler::priority int    priority [virtual]
 

Set the priority of the Event_Handler.

int ACE_Event_Handler::priority void    const [virtual]
 

Get the priority of the Event_Handler.

ACE_Reactor * ACE_Event_Handler::reactor void    const [virtual]
 

Get the event demultiplexors.

void ACE_Event_Handler::reactor ACE_Reactor   reactor [virtual]
 

Set the event demultiplexors.

ACE_THR_FUNC_RETURN ACE_Event_Handler::read_adapter void *    args [static]
 

Used to read from non-socket ACE_HANDLEs in our own thread to work around Win32 limitations that don't allow us to <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.

int ACE_Event_Handler::register_stdin_handler ACE_Event_Handler *    eh,
ACE_Reactor   reactor,
ACE_Thread_Manager   thr_mgr,
int    flags = THR_DETACHED
[static]
 

Abstracts away from the differences between Win32 and ACE with respect to reading from ACE_STDIN, which is non-<select>'able on Win32.

int ACE_Event_Handler::remove_stdin_handler ACE_Reactor   reactor,
ACE_Thread_Manager   thr_mgr
[static]
 

Performs the inverse of the <register_stdin_handler> method.

int ACE_Event_Handler::resume_handler void    [virtual]
 

void ACE_Event_Handler::set_handle ACE_HANDLE    handle [virtual]
 

Set the I/O handle.

Reimplemented in ACE_POSIX_Asynch_Accept, ACE_POSIX_Asynch_Connect, ACE_Svc_Handler, ACE_WIN32_Asynch_Connect, and ACE_Svc_Handler< ACE_PEER_STREAM_2, ACE_SYNCH_USE >.


Member Data Documentation

int ACE_Event_Handler::priority_ [private]
 

Priority of this Event_Handler.

ACE_Reactor* ACE_Event_Handler::reactor_ [private]
 

Pointer to the various event demultiplexors.

Reimplemented in ACE_Asynch_Pseudo_Task, and ACE_Name_Proxy.


The documentation for this class was generated from the following files:
Generated on Tue Aug 20 15:22:00 2002 for ACE by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001