## NAME

ACE_Asynch_Result_Impl -

Abstract base class for the all the classes that provide concrete implementations for ACE_Asynch_Result.

## SYNOPSIS

    class ACE_Asynch_Result_Impl
    {
      public:
        inline virtual ~ACE_Asynch_Result_Impl (void);
        virtual u_long bytes_transferred (void) const = 0;
        virtual const void *act (void) const = 0;
        virtual int success (void) const = 0;
        virtual const void *completion_key (void) const = 0;
        virtual u_long error (void) const = 0;
        virtual ACE_HANDLE event (void) const = 0;
        virtual u_long offset (void) const = 0;
        virtual u_long offset_high (void) const = 0;
        virtual int priority (void) const = 0;
        virtual int signal_number (void) const = 0;
        virtual void complete (
            u_long bytes_transferred,
            int success,
            const void *completion_key,
            u_long error = 0
            ) = 0;
        virtual int post_completion (ACE_Proactor_Impl *proactor) = 0;
      protected:
        ACE_Asynch_Result_Impl (void);
    };

## DESCRIPTION

This class contains asbtract base classes for all the concrete implementation classes for the various asynchronous operations that are used with the Praoctor.

## PUBLIC MEMBERS

    inline virtual ~ACE_Asynch_Result_Impl (void);

    virtual u_long bytes_transferred (void) const = 0;

Number of bytes transferred by the operation.

    virtual const void *act (void) const = 0;

ACT associated with the operation.

    virtual int success (void) const = 0;

Did the operation succeed?

    virtual const void *completion_key (void) const = 0;

This ACT is not the same as the ACT associated with the asynchronous operation.

    virtual u_long error (void) const = 0;

Error value if the operation fail.

    virtual ACE_HANDLE event (void) const = 0;

Event associated with the OVERLAPPED structure.

    virtual u_long offset (void) const = 0;

    virtual u_long offset_high (void) const = 0;

This really make sense only when doing file I/O.

    virtual int priority (void) const = 0;

Priority of the operation.

    virtual int signal_number (void) const = 0;

POSIX4 real-time signal number to be used for the operation. `signal_number` ranges from SIGRTMIN to SIGRTMAX. By default, SIGRTMIN is used to issue `aio_` calls. This is a no-op on non-POSIX4 systems and returns 0.

    virtual void complete (
        u_long bytes_transferred,
        int success,
        const void *completion_key,
        u_long error = 0
        ) = 0;

This is called when the asynchronous operation completes.

    virtual int post_completion (ACE_Proactor_Impl *proactor) = 0;

Post `this` to the Proactor's completion port.

## PROTECTED MEMBERS

    ACE_Asynch_Result_Impl (void);

Do-nothing constructor.

## AUTHOR

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

## LIBRARY

ace