NAME

ACE_Asynch_Acceptor - This class is an example of the Acceptor Pattern. This class will accept new connections and create new HANDLER to handle the new connections.

SYNOPSIS

#include <ace/Asynch_Acceptor.h>

template<class HANDLER> class ACE_Asynch_Acceptor : public ACE_Handler { public: ACE_Asynch_Acceptor (void); virtual ~ACE_Asynch_Acceptor (void); virtual int open ( const ACE_INET_Addr &address, size_t bytes_to_read = 0, int pass_addresses = 0, int backlog = ACE_DEFAULT_BACKLOG, int reuse_addr = 1, ACE_Proactor *proactor = 0, int validate_new_connection = 0, int reissue_accept = 1, int number_of_initial_accepts = -1 ); virtual ACE_HANDLE get_handle (void) const; virtual void set_handle (ACE_HANDLE handle); virtual int accept ( size_t bytes_to_read = 0, const void *act = 0 ); virtual int cancel (void); virtual int validate_new_connection ( const ACE_INET_Addr &remote_address ); virtual int should_reissue_accept (void); virtual int pass_addresses (void) const; virtual void pass_addresses (int new_value); virtual int validate_new_connection (void) const; virtual void validate_new_connection (int new_value); virtual int reissue_accept (void) const; virtual void reissue_accept (int new_value); virtual int bytes_to_read (void) const; virtual void bytes_to_read (int new_value); static size_t address_size (void); protected: virtual void handle_accept ( const ACE_Asynch_Accept::Result &result ); ACE_HANDLE handle (void) const; void parse_address ( const ACE_Asynch_Accept::Result &result, ACE_INET_Addr &remote_address, ACE_INET_Addr &local_address ); virtual HANDLER *make_handler (void); private: ACE_HANDLE listen_handle_; ACE_Asynch_Accept asynch_accept_; int pass_addresses_; int validate_new_connection_; int reissue_accept_; int bytes_to_read_; };

DESCRIPTION

Unlike the ACE_Acceptor, however, this class is designed to be used asynchronously.

PUBLIC MEMBERS

ACE_Asynch_Acceptor (void);

virtual ~ACE_Asynch_Acceptor (void);

virtual int open (
    const ACE_INET_Addr &address,
    size_t bytes_to_read = 0,
    int pass_addresses = 0,
    int backlog = ACE_DEFAULT_BACKLOG,
    int reuse_addr = 1,
    ACE_Proactor *proactor = 0,
    int validate_new_connection = 0,
    int reissue_accept = 1,
    int number_of_initial_accepts = -1
    );

virtual ACE_HANDLE get_handle (void) const;

virtual void set_handle (ACE_HANDLE handle);

virtual int accept (size_t bytes_to_read = 0, const void *act = 0);

virtual int cancel (void);

virtual int validate_new_connection (
    const ACE_INET_Addr &remote_address
    );

virtual int should_reissue_accept (void);

virtual int pass_addresses (void) const;

virtual void pass_addresses (int new_value);

virtual int validate_new_connection (void) const;

virtual void validate_new_connection (int new_value);

virtual int reissue_accept (void) const;

virtual void reissue_accept (int new_value);

virtual int bytes_to_read (void) const;

virtual void bytes_to_read (int new_value);

static size_t address_size (void);

PROTECTED MEMBERS

virtual void handle_accept (const ACE_Asynch_Accept::Result &result);

ACE_HANDLE handle (void) const;

void parse_address (
    const ACE_Asynch_Accept::Result &result,
    ACE_INET_Addr &remote_address,
    ACE_INET_Addr &local_address
    );

virtual HANDLER *make_handler (void);

PRIVATE MEMBERS

ACE_HANDLE listen_handle_;

ACE_Asynch_Accept asynch_accept_;

int pass_addresses_;

int validate_new_connection_;

int reissue_accept_;

int bytes_to_read_;

AUTHOR

Irfan Pyarali (irfan@cs.wustl.edu)

LIBRARY

ace