#include <ace/Asynch_IO.h>
class ACE_Asynch_Transmit_File : public ACE_Asynch_Operation {
public:ACE_Asynch_Transmit_File (void);int transmit_file ( ACE_HANDLE file, Header_And_Trailer *header_and_trailer = 0, u_long bytes_to_write = 0, u_long offset = 0, u_long offset_high = 0, u_long bytes_per_send = 0, u_long flags = 0, const void *act = 0 );class Result : public ACE_Asynch_Result {
public:friend class ACE_Asynch_Read_Stream;u_long bytes_to_read (void) const;ACE_Message_Block &message_block (void) const;ACE_HANDLE handle (void) const;Result ( ACE_Handler &handler, ACE_HANDLE handle, ACE_Message_Block &message_block, u_long bytes_to_read, const void* act, ACE_HANDLE event );virtual void complete ( u_long bytes_transferred, int success, const void *completion_key, u_long error = 0 );friend class ACE_Asynch_Write_Stream;u_long bytes_to_write (void) const;ACE_Message_Block &message_block (void) const;ACE_HANDLE handle (void) const;Result ( ACE_Handler &handler, ACE_HANDLE handle, ACE_Message_Block &message_block, u_long bytes_to_write, const void* act, ACE_HANDLE event );virtual void complete ( u_long bytes_transferred, int success, const void *completion_key, u_long error = 0 );friend class ACE_Asynch_Read_File;friend class ACE_Asynch_Write_File;friend class ACE_Asynch_Accept;u_long bytes_to_read (void) const;ACE_Message_Block &message_block (void) const;ACE_HANDLE listen_handle (void) const;ACE_HANDLE accept_handle (void) const;Result ( ACE_Handler &handler, ACE_HANDLE listen_handle, ACE_HANDLE accept_handle, ACE_Message_Block &message_block, u_long bytes_to_read, const void* act, ACE_HANDLE event );virtual void complete ( u_long bytes_transferred, int success, const void *completion_key, u_long error = 0 );friend class ACE_Asynch_Transmit_File;ACE_HANDLE socket (void) const;ACE_HANDLE file (void) const;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;Result ( ACE_Handler &handler, ACE_HANDLE socket, ACE_HANDLE 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 );virtual void complete ( u_long bytes_transferred, int success, const void *completion_key, u_long error = 0 );protected:u_long bytes_to_read_;ACE_Message_Block &message_block_;ACE_HANDLE handle_;u_long bytes_to_write_;ACE_Message_Block &message_block_;ACE_HANDLE handle_;u_long bytes_to_read_;ACE_Message_Block &message_block_;ACE_HANDLE listen_handle_;ACE_HANDLE accept_handle_;ACE_HANDLE socket_;ACE_HANDLE file_;Header_And_Trailer *header_and_trailer_;u_long bytes_to_write_;u_long bytes_per_send_;u_long flags_;private:Result ( ACE_Handler &handler, ACE_HANDLE handle, ACE_Message_Block &message_block, u_long bytes_to_read, const void* act, u_long offset, u_long offset_high, ACE_HANDLE event );virtual void complete ( u_long bytes_transferred, int success, const void *completion_key, u_long error = 0 );Result ( ACE_Handler &handler, ACE_HANDLE handle, ACE_Message_Block &message_block, u_long bytes_to_write, const void* act, u_long offset, u_long offset_high, ACE_HANDLE event );virtual void complete ( u_long bytes_transferred, int success, const void *completion_key, u_long error = 0 );};
};
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_Asynch_Transmit_File (void);
int transmit_file (
ACE_HANDLE file,
Header_And_Trailer *header_and_trailer = 0,
u_long bytes_to_write = 0,
u_long offset = 0,
u_long offset_high = 0,
u_long bytes_per_send = 0,
u_long flags = 0,
const void *act = 0
);
file is a
handle to an open file. header_and_trailer is a pointer to a
data structure that contains pointers to data to send before and
after the file data is sent. Set this parameter to 0 if you only
want to transmit the file data. Upto bytes_to_write will be
written to the socket. If you want to send the entire file,
let bytes_to_write = 0. bytes_per_send is the size of each
block of data sent per send operation. Please read the Win32
documentation on what the flags should be.