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 char service_name[] = 0,
        const char service_description[] = 0
        );
    ACE_Strategy_Acceptor (
        const ACE_PEER_ACCEPTOR_ADDR &local_addr,
        ACE_Reactor * = ACE_Service_Config::reactor (),
        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 char service_name[] = 0,
        const char service_description[] = 0
        );
    int open (
        const ACE_PEER_ACCEPTOR_ADDR &,
        ACE_Reactor * = ACE_Service_Config::reactor (),
        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 char service_name[] = 0,
        const char service_description[] = 0
        );
    virtual ~ACE_Strategy_Acceptor (void);
    virtual operator ACE_PEER_ACCEPTOR &() const;
    virtual ACE_PEER_ACCEPTOR &acceptor (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 (char **buf, size_t) const;
    virtual SVC_HANDLER *make_svc_handler (void);
    virtual int accept_svc_handler (SVC_HANDLER *svc_handler);
    virtual int activate_svc_handler (SVC_HANDLER *svc_handler);
    virtual ACE_HANDLE get_handle (void) const;
    virtual int handle_close (
        ACE_HANDLE = ACE_INVALID_HANDLE,
        ACE_Reactor_Mask = ACE_Event_Handler::RWE_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_;
    char *service_name_;
    char *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 char service_name[] = 0,
    const char service_description[] = 0
    );
ACE_Strategy_Acceptor (
    const ACE_PEER_ACCEPTOR_ADDR &local_addr,
    ACE_Reactor * = ACE_Service_Config::reactor (),
    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 char service_name[] = 0,
    const char service_description[] = 0
    );
int open (
    const ACE_PEER_ACCEPTOR_ADDR &,
    ACE_Reactor * = ACE_Service_Config::reactor (),
    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 char service_name[] = 0,
    const char service_description[] = 0
    );
virtual ~ACE_Strategy_Acceptor (void);
virtual operator ACE_PEER_ACCEPTOR &() const;
virtual ACE_PEER_ACCEPTOR &acceptor (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 (char **buf, size_t) const;
= The following three methods define the Acceptor's strategies for creating, accepting, and activating SVC_HANDLER's, respectively.
virtual SVC_HANDLER *make_svc_handler (void);
virtual int accept_svc_handler (SVC_HANDLER *svc_handler);
virtual int activate_svc_handler (SVC_HANDLER *svc_handler);

Demultiplexing hooks.

virtual ACE_HANDLE get_handle (void) const;
virtual int handle_close (
    ACE_HANDLE = ACE_INVALID_HANDLE,
    ACE_Reactor_Mask = ACE_Event_Handler::RWE_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.

char *service_name_;
char *service_description_;
u_short service_port_;
ACE_PEER_ACCEPTOR_ADDR service_addr_;

AUTHOR

Doug Schmidt

LIBRARY

ace