class ACE_Handler {
public:
ACE_Handler (void);
ACE_Handler (ACE_Proactor *p);
virtual ~ACE_Handler (void);
virtual void handle_read_stream ( const ACE_Asynch_Read_Stream::Result &result );
virtual void handle_write_stream ( const ACE_Asynch_Write_Stream::Result &result );
virtual void handle_read_file ( const ACE_Asynch_Read_File::Result &result );
virtual void handle_write_file ( const ACE_Asynch_Write_File::Result &result );
virtual void handle_accept ( const ACE_Asynch_Accept::Result &result );
virtual void handle_transmit_file ( const ACE_Asynch_Transmit_File::Result &result );
virtual void handle_time_out ( const ACE_Time_Value &tv, const void *act = 0 );
virtual void handle_wakeup (void);
ACE_Proactor *proactor (void);
void proactor (ACE_Proactor *p);
virtual ACE_HANDLE handle (void) const;
protected:
ACE_Proactor *proactor_;
};
This works on Win32 (#if defined (ACE_WIN32) && !defined
(ACE_HAS_WINCE)) platforms and on POSIX4 platforms with aio_*
routines (#if defined (ACE_HAS_AIO_CALLS))
On Win32 platforms, the implementation of
ACE_Asynch_Transmit_File
and ACE_Asynch_Accept
are only
supported if ACE_HAS_WINSOCK2 is defined or you are on WinNT 4.0
or higher.
ACE_Handler (void);
ACE_Handler (ACE_Proactor *p);
p
.
virtual ~ACE_Handler (void);
virtual void handle_read_stream (
const ACE_Asynch_Read_Stream::Result &result
);
virtual void handle_write_stream (
const ACE_Asynch_Write_Stream::Result &result
);
virtual void handle_read_file (
const ACE_Asynch_Read_File::Result &result
);
virtual void handle_write_file (
const ACE_Asynch_Write_File::Result &result
);
virtual void handle_accept (const ACE_Asynch_Accept::Result &result);
virtual void handle_transmit_file (
const ACE_Asynch_Transmit_File::Result &result
);
virtual void handle_time_out (
const ACE_Time_Value &tv,
const void *act = 0
);
tv
was the requested time value and
act
is the ACT passed when scheduling the timer.
virtual void handle_wakeup (void);
run_event_loop
of the
ACE_Proactor. A special Wake_Up_Completion
is used to wake up
all the threads that are blocking for completions.
ACE_Proactor *proactor (void);
void proactor (ACE_Proactor *p);
virtual ACE_HANDLE handle (void) const;
handler
. This method will be
called by the ACE_Asynch_* classes when an ACE_INVALID_HANDLE is
passed to open
.
ACE_Proactor *proactor_;
Irfan Pyarali irfan@cs.wustl.edu
,
Tim Harrison harrison@cs.wustl.edu
and
Alexander Babu Arulanthu alex@cs.wustl.edu
ace