NAME

ACE_Strategy_Acceptor - Abstract factory for creating a service handler (SVC_HANDLER), accepting into the SVC_HANDLER, and activating the SVC_HANDLER.

SYNOPSIS

#include <ace/Acceptor.h>

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1> class ACE_Strategy_Acceptor : public ACE_Acceptor <SVC_HANDLER, ACE_PEER_ACCEPTOR_2> { public: ACE_Strategy_Acceptor ( const ASYS_TCHAR service_name[] = 0, const ASYS_TCHAR service_description[] = 0, int use_select = 1 ); ACE_Strategy_Acceptor ( const ACE_PEER_ACCEPTOR_ADDR &local_addr, ACE_Reactor * = ACE_Reactor::instance (), ACE_Creation_Strategy<SVC_HANDLER> * = 0, ACE_Accept_Strategy<SVC_HANDLER, ACE_PEER_ACCEPTOR_2> * = 0, ACE_Concurrency_Strategy<SVC_HANDLER> * = 0, ACE_Scheduling_Strategy<SVC_HANDLER> * = 0, const ASYS_TCHAR service_name[] = 0, const ASYS_TCHAR service_description[] = 0, int use_select = 1 ); int open ( const ACE_PEER_ACCEPTOR_ADDR &, ACE_Reactor * = ACE_Reactor::instance (), ACE_Creation_Strategy<SVC_HANDLER> * = 0, ACE_Accept_Strategy<SVC_HANDLER, ACE_PEER_ACCEPTOR_2> * = 0, ACE_Concurrency_Strategy<SVC_HANDLER> * = 0, ACE_Scheduling_Strategy<SVC_HANDLER> * = 0, const ASYS_TCHAR *service_name = 0, const ASYS_TCHAR *service_description = 0, int use_select = 1 ); virtual ~ACE_Strategy_Acceptor (void); virtual operator ACE_PEER_ACCEPTOR &() const; virtual ACE_PEER_ACCEPTOR &acceptor (void) const; virtual ACE_HANDLE get_handle (void) const; void dump (void) const; ACE_ALLOC_HOOK_DECLARE; protected: virtual int suspend (void); virtual int resume (void); virtual int fini (void); virtual int info (ASYS_TCHAR **buf, size_t) const; virtual int make_svc_handler (SVC_HANDLER *&); virtual int accept_svc_handler (SVC_HANDLER *svc_handler); virtual int activate_svc_handler (SVC_HANDLER *svc_handler); virtual int handle_close ( ACE_HANDLE = ACE_INVALID_HANDLE, ACE_Reactor_Mask = ACE_Event_Handler::ALL_EVENTS_MASK ); virtual int handle_signal (int signum, siginfo_t *, ucontext_t *); typedef ACE_Creation_Strategy<SVC_HANDLER> CREATION_STRATEGY; typedef ACE_Accept_Strategy<SVC_HANDLER, ACE_PEER_ACCEPTOR_2> ACCEPT_STRATEGY; typedef ACE_Concurrency_Strategy<SVC_HANDLER> CONCURRENCY_STRATEGY; typedef ACE_Scheduling_Strategy<SVC_HANDLER> SCHEDULING_STRATEGY; CREATION_STRATEGY *creation_strategy_; int delete_creation_strategy_; ACCEPT_STRATEGY *accept_strategy_; int delete_accept_strategy_; CONCURRENCY_STRATEGY *concurrency_strategy_; int delete_concurrency_strategy_; SCHEDULING_STRATEGY *scheduling_strategy_; int delete_scheduling_strategy_; ASYS_TCHAR *service_name_; ASYS_TCHAR *service_description_; u_short service_port_; ACE_PEER_ACCEPTOR_ADDR service_addr_; };

DESCRIPTION

Implements a flexible and extensible set of strategies for passively establishing connections with clients. There are three main strategies: (1) creating a SVC_HANDLER, (2) passively accepting a new connection from a client into the SVC_HANDLER, and (3) activating the SVC_HANDLER with a particular concurrency mechanism.

Initialization and termination methods.

ACE_Strategy_Acceptor (
    const ASYS_TCHAR service_name[] = 0,
    const ASYS_TCHAR service_description[] = 0,
    int use_select = 1
    );

ACE_Strategy_Acceptor (
    const ACE_PEER_ACCEPTOR_ADDR &local_addr,
    ACE_Reactor * = ACE_Reactor::instance (),
    ACE_Creation_Strategy<SVC_HANDLER> * = 0,
    ACE_Accept_Strategy<SVC_HANDLER, ACE_PEER_ACCEPTOR_2> * = 0,
    ACE_Concurrency_Strategy<SVC_HANDLER> * = 0,
    ACE_Scheduling_Strategy<SVC_HANDLER> * = 0,
    const ASYS_TCHAR service_name[] = 0,
    const ASYS_TCHAR service_description[] = 0,
    int use_select = 1
    );

int open (
    const ACE_PEER_ACCEPTOR_ADDR &,
    ACE_Reactor * = ACE_Reactor::instance (),
    ACE_Creation_Strategy<SVC_HANDLER> * = 0,
    ACE_Accept_Strategy<SVC_HANDLER, ACE_PEER_ACCEPTOR_2> * = 0,
    ACE_Concurrency_Strategy<SVC_HANDLER> * = 0,
    ACE_Scheduling_Strategy<SVC_HANDLER> * = 0,
    const ASYS_TCHAR *service_name = 0,
    const ASYS_TCHAR *service_description = 0,
    int use_select = 1
    );

virtual ~ACE_Strategy_Acceptor (void);

virtual operator ACE_PEER_ACCEPTOR &() const;

virtual ACE_PEER_ACCEPTOR &acceptor (void) const;

virtual ACE_HANDLE get_handle (void) const;

void dump (void) const;

ACE_ALLOC_HOOK_DECLARE;

Service management hooks.

virtual int suspend (void);

virtual int resume (void);

virtual int fini (void);

virtual int info (ASYS_TCHAR **buf, size_t) const;

= The following three methods define the Acceptor's strategies for creating, accepting, and activating SVC_HANDLER's, respectively.

virtual int make_svc_handler (SVC_HANDLER *&);

virtual int accept_svc_handler (SVC_HANDLER *svc_handler);

virtual int activate_svc_handler (SVC_HANDLER *svc_handler);

Demultiplexing hooks.

virtual int handle_close (
    ACE_HANDLE = ACE_INVALID_HANDLE,
    ACE_Reactor_Mask = ACE_Event_Handler::ALL_EVENTS_MASK
    );

virtual int handle_signal (int signum, siginfo_t *, ucontext_t *);

These data members are

logically private" but are put in the" protected part in case subclasses want to access them.

Define some useful typedefs.

typedef ACE_Creation_Strategy<SVC_HANDLER> CREATION_STRATEGY;

    typedef ACE_Accept_Strategy<SVC_HANDLER, ACE_PEER_ACCEPTOR_2> ACCEPT_STRATEGY;
    

typedef ACE_Concurrency_Strategy<SVC_HANDLER> CONCURRENCY_STRATEGY;

typedef ACE_Scheduling_Strategy<SVC_HANDLER> SCHEDULING_STRATEGY;

Strategy objects.

CREATION_STRATEGY *creation_strategy_;

int delete_creation_strategy_;

ACCEPT_STRATEGY *accept_strategy_;

int delete_accept_strategy_;

CONCURRENCY_STRATEGY *concurrency_strategy_;

int delete_concurrency_strategy_;

SCHEDULING_STRATEGY *scheduling_strategy_;

int delete_scheduling_strategy_;

Service information objects.

ASYS_TCHAR *service_name_;

ASYS_TCHAR *service_description_;

u_short service_port_;

ACE_PEER_ACCEPTOR_ADDR service_addr_;

AUTHOR

Doug Schmidt

LIBRARY

ace