## NAME

ACE_Handler -

This base class defines the interface for receiving the results of asynchronous operations.

## SYNOPSIS

    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_;
    };

## DESCRIPTION

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.

## PUBLIC MEMBERS

    ACE_Handler (void);

A do nothing constructor.

    ACE_Handler (ACE_Proactor *p);

A do nothing constructor which allows proactor to be set to `d`.

    virtual ~ACE_Handler (void);

Virtual destruction.

    virtual void handle_read_stream (
        const ACE_Asynch_Read_Stream::Result &result
        );

This method will be called when an asynchronous read completes on a stream.

    virtual void handle_write_stream (
        const ACE_Asynch_Write_Stream::Result &result
        );

This method will be called when an asynchronous write completes on a strea_m.

    virtual void handle_read_file (
        const ACE_Asynch_Read_File::Result &result
        );

This method will be called when an asynchronous read completes on a file.

    virtual void handle_write_file (
        const ACE_Asynch_Write_File::Result &result
        );

This method will be called when an asynchronous write completes on a file.

    virtual void handle_accept (const ACE_Asynch_Accept::Result &result);

This method will be called when an asynchronous accept completes.

    virtual void handle_transmit_file (
        const ACE_Asynch_Transmit_File::Result &result
        );

This method will be called when an asynchronous transmit file completes.

    virtual void handle_time_out (
        const ACE_Time_Value &tv,
        const void *act = 0
        );

Called when timer expires. `tv` was the requested time value and `act` is the ACT passed when scheduling the timer.

    virtual void handle_wakeup (void);

This is method works with the `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);

Get the proactor associated with this handler.

    void proactor (ACE_Proactor *p);

Set the proactor.

    virtual ACE_HANDLE handle (void) const;

Get the I/O handle used by this `handler`. This method will be called by the ACE_Asynch_* classes when an ACE_INVALID_HANDLE is passed to `open`.

## PROTECTED MEMBERS

    ACE_Proactor *proactor_;

The proactor associated with this handler.

## AUTHOR

Irfan Pyarali `irfan@cs.wustl.edu`, Tim Harrison `harrison@cs.wustl.edu` and Alexander Babu Arulanthu `alex@cs.wustl.edu`

## LIBRARY

ace