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