#include <ace/Asynch_IO.h>
class ACE_Asynch_Accept : public ACE_Asynch_Operation {
public:
ACE_Asynch_Accept (void);
int accept ( ACE_Message_Block &message_block, u_long bytes_to_read, ACE_HANDLE accept_handle = ACE_INVALID_HANDLE, 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_Accept (void);
int accept (
ACE_Message_Block &message_block,
u_long bytes_to_read,
ACE_HANDLE accept_handle = ACE_INVALID_HANDLE,
const void *act = 0
);
handler
. Upto bytes_to_read
will be read and stored in the
message_block
. The accept_handle
will be used for the
accept
call. If (accept_handle
== INVALID_HANDLE), a new
handle will be created.
message_block
must be specified. This is because the address of
the new connection is placed at the end of this buffer.