Asynch_Transmit_File in
Unix. ACE_Asynch_Transmit_File internally uses this.
#include <ace/Asynch_IO.h>
class ACE_Asynch_Transmit_Handler : public ACE_Handler {
public:ACE_Asynch_Transmit_Handler ( ACE_Asynch_Transmit_File::Result *result, ACE_Proactor *proactor );virtual ~ACE_Asynch_Transmit_Handler (void);int transmit (void);protected:virtual void handle_write_stream ( const ACE_Asynch_Write_Stream::Result &result );virtual void handle_read_file ( const ACE_Asynch_Read_File::Result &result );private:int initiate_read_file (void);ACE_Asynch_Transmit_File::Result *result_;ACE_Proactor *proactor_;ACE_Asynch_Read_File rf_;ACE_Asynch_Write_Stream ws_;ACE_Message_Block *mb_;enum ACT{ HEADER_ACT = 1, DATA_ACT = 2, TRAILER_ACT = 3 };ACT header_act_;ACT data_act_;ACT trailer_act_;size_t file_offset_;size_t file_size_;size_t bytes_transferred_;size_t transmit_file_done_;};
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_Handler (
ACE_Asynch_Transmit_File::Result *result,
ACE_Proactor *proactor
);
proactor pointer tells this class
the proactor that is being used by the
Asynch_Transmit_Operation and the application.
virtual ~ACE_Asynch_Transmit_Handler (void);
int transmit (void);
result member.
virtual void handle_write_stream (
const ACE_Asynch_Write_Stream::Result &result
);
virtual void handle_read_file (
const ACE_Asynch_Read_File::Result &result
);
int initiate_read_file (void);
ACE_Asynch_Transmit_File::Result *result_;
ACE_Proactor *proactor_;
ACE_Asynch_Read_File rf_;
ACE_Asynch_Write_Stream ws_;
ACE_Message_Block *mb_;
ACT header_act_;
ACT data_act_;
ACT trailer_act_;
size_t file_offset_;
size_t file_size_;
size_t bytes_transferred_;
size_t transmit_file_done_;
alex@cs.wustl.edu