## NAME

ACE_WIN32_Asynch_Transmit_File_Result -

This class implements ACE_Asynch_Transmit_File::Result for WIN32 platforms.

## SYNOPSIS

    class ACE_WIN32_Asynch_Transmit_File_Result :
      public virtual ACE_Asynch_Transmit_File_Result_Impl,
      public ACE_WIN32_Asynch_Result
    {
      public:
        friend class ACE_WIN32_Asynch_Transmit_File;
        friend class ACE_WIN32_Proactor;
        ACE_HANDLE socket (void) const;
        ACE_HANDLE file (void) const;
        ACE_Asynch_Transmit_File::Header_And_Trailer *header_and_trailer (
            void
            ) const;
        u_long bytes_to_write (void) const;
        u_long bytes_per_send (void) const;
        u_long flags (void) const;
        u_long bytes_transferred (void) const;
        const void *act (void) const;
        int success (void) const;
        const void *completion_key (void) const;
        u_long error (void) const;
        ACE_HANDLE event (void) const;
        u_long offset (void) const;
        u_long offset_high (void) const;
        int priority (void) const;
        int signal_number (void) const;
        int post_completion (ACE_Proactor_Impl *proactor);
      protected:
        ACE_WIN32_Asynch_Transmit_File_Result (
            ACE_Handler &handler,
            ACE_HANDLE socket,
            ACE_HANDLE file,
            ACE_Asynch_Transmit_File::Header_And_Trailer *header_and_trailer,
            u_long bytes_to_write,
            u_long offset,
            u_long offset_high,
            u_long bytes_per_send,
            u_long flags,
            const void *act,
            ACE_HANDLE event,
            int priority,
            int signal_number = 0
            );
        virtual void complete (
            u_long bytes_transferred,
            int success,
            const void *completion_key,
            u_long error
            );
        virtual ~ACE_WIN32_Asynch_Transmit_File_Result (void);
        ACE_HANDLE socket_;
        ACE_HANDLE file_;
        ACE_Asynch_Transmit_File::Header_And_Trailer *header_and_trailer_;
        u_long bytes_to_write_;
        u_long bytes_per_send_;
        u_long flags_;
    };

## DESCRIPTION

These classes only works 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

    friend class ACE_WIN32_Asynch_Transmit_File;

Factory class will have special permission.

    friend class ACE_WIN32_Proactor;

Proactor class has special permission.

    ACE_HANDLE socket (void) const;

Socket used for transmitting the file.

    ACE_HANDLE file (void) const;

File from which the data is read.

    ACE_Asynch_Transmit_File::Header_And_Trailer *header_and_trailer (
        void
        ) const;

Header and trailer data associated with this transmit file.

    u_long bytes_to_write (void) const;

The number of bytes which were requested at the start of the asynchronous transmit file.

    u_long bytes_per_send (void) const;

Number of bytes per send requested at the start of the transmit file.

    u_long flags (void) const;

Flags which were passed into transmit file.

    u_long bytes_transferred (void) const;

Number of bytes transferred by the operation.

    const void *act (void) const;

ACT associated with the operation.

    int success (void) const;

Did the operation succeed?

    const void *completion_key (void) const;

This returns the ACT associated with the handle when it was registered with the I/O completion port. This ACT is not the same as the ACT associated with the asynchronous operation.

    u_long error (void) const;

Error value if the operation fail.

    ACE_HANDLE event (void) const;

Event associated with the OVERLAPPED structure.

    u_long offset (void) const;

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

    u_long offset_high (void) const;

Offset_high associated with the OVERLAPPED structure.

    int priority (void) const;

The priority of the asynchronous operation. Currently, this is not supported on Win32.

    int signal_number (void) const;

No-op. Returns 0.

    int post_completion (ACE_Proactor_Impl *proactor);

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

## PROTECTED MEMBERS

    ACE_WIN32_Asynch_Transmit_File_Result (
        ACE_Handler &handler,
        ACE_HANDLE socket,
        ACE_HANDLE file,
        ACE_Asynch_Transmit_File::Header_And_Trailer *header_and_trailer,
        u_long bytes_to_write,
        u_long offset,
        u_long offset_high,
        u_long bytes_per_send,
        u_long flags,
        const void *act,
        ACE_HANDLE event,
        int priority,
        int signal_number = 0
        );

Constructor is protected since creation is limited to ACE_Asynch_Transmit_File factory.

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

Proactor will call this method when the write completes.

    virtual ~ACE_WIN32_Asynch_Transmit_File_Result (void);

Destructor.

    ACE_HANDLE socket_;

Network I/O handle.

    ACE_HANDLE file_;

File I/O handle.

    ACE_Asynch_Transmit_File::Header_And_Trailer *header_and_trailer_;

Header and trailer data associated with this transmit file.

    u_long bytes_to_write_;

The number of bytes which were requested at the start of the asynchronous transmit file.

    u_long bytes_per_send_;

Number of bytes per send requested at the start of the transmit file.

    u_long flags_;

Flags which were passed into transmit file.

## AUTHOR

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

## LIBRARY

ace