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 = 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)
}

Public Methods

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

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

virtual void set_handle (ACE_HANDLE)
virtual int priority (void) const
 Get the priority of the Event_Handler. Set the priority of the Event_Handler.

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

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).

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

virtual int handle_timeout (const ACE_Time_Value &current_time, const void *act = 0)
virtual int handle_exit (ACE_Process *)
 Called when a process exits.

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 . The <close_mask> indicates which event has triggered the <handle_close> method callback on a particular <handle>.

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).

virtual int resume_handler (void)
 Called to figure out whether the handler needs to resumed by the reactor or the application can take care of it. The default value of 0 would be returned which would allow the reactor to take care of resumption of the handler. The application can return a value more than zero and decide to resume the handler themseleves.

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_Reactorreactor (void) const

Static Public Methods

void* read_adapter (void *event_handler)
int register_stdin_handler (ACE_Event_Handler *eh, ACE_Reactor *reactor, ACE_Thread_Manager *thr_mgr, int flags = THR_DETACHED)
int remove_stdin_handler (ACE_Reactor *reactor, ACE_Thread_Manager *thr_mgr)
 Performs the inverse of the <register_stdin_handler> method.


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.


Private Attributes

int priority_
 Priority of this Event_Handler.

ACE_Reactorreactor_

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  


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 priority = ACE_Event_Handler::LO_PRIORITY ) [inline, 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. Set the I/O handle.

Reimplemented in ACE_Acceptor, ACE_Strategy_Acceptor, ACE_Oneshot_Acceptor, ACE_Name_Proxy, ACE_POSIX_Proactor, ACE_Proactor_Impl, ACE_Service_Manager, ACE_Svc_Handler, ACE_WFMO_Reactor_Notify, and ACE_WIN32_Proactor.

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 . 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_Service_Manager, ACE_Svc_Handler, and ACE_WIN32_Proactor.

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.

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 h = 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_Handler, ACE_Select_Reactor_Notify, and ACE_Service_Manager.

int ACE_Event_Handler::handle_output ( ACE_HANDLE handle = 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.

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 & tv,
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 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, and ACE_Buffered_Svc_Handler.

void ACE_Event_Handler::priority ( int priority ) [virtual]
 

int ACE_Event_Handler::priority ( void ) const [virtual]
 

Get the priority of the Event_Handler. Set the priority of the Event_Handler.

ACE_Reactor * ACE_Event_Handler::reactor ( void ) const [virtual]
 

void ACE_Event_Handler::reactor ( ACE_Reactor * reactor ) [virtual]
 

void * ACE_Event_Handler::read_adapter ( void * event_handler ) [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 . If the <get_handle> method of this event handler returns 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]
 

Called to figure out whether the handler needs to resumed by the reactor or the application can take care of it. The default value of 0 would be returned which would allow the reactor to take care of resumption of the handler. The application can return a value more than zero and decide to resume the handler themseleves.

void ACE_Event_Handler::set_handle ( ACE_HANDLE h ) [virtual]
 

Reimplemented in ACE_Svc_Handler.


Member Data Documentation

int ACE_Event_Handler::priority_ [private]
 

Priority of this Event_Handler.

ACE_Reactor * ACE_Event_Handler::reactor_ [private]
 

Reimplemented in ACE_Name_Proxy, and ACE_POSIX_Asynch_Accept_Handler.


The documentation for this class was generated from the following files:
Generated at Fri Oct 5 07:01:59 2001 for ACE by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000