NAME

ACE_Oneshot_Acceptor - Generic factory for passively connecting clients and creating exactly one service handler (SVC_HANDLER).

SYNOPSIS


#include <ace/Acceptor.h>


template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1>
class ACE_Oneshot_Acceptor : public ACE_Service_Object
{
  public:
    ACE_Oneshot_Acceptor (void);
    ACE_Oneshot_Acceptor (
        const ACE_PEER_ACCEPTOR_ADDR &,
        ACE_Reactor * = ACE_Service_Config::reactor (),
        ACE_Concurrency_Strategy<SVC_HANDLER> * = 0
        );
    int open (
        const ACE_PEER_ACCEPTOR_ADDR &,
        ACE_Reactor * = ACE_Service_Config::reactor (),
        ACE_Concurrency_Strategy<SVC_HANDLER> * = 0
        );
    virtual ~ACE_Oneshot_Acceptor (void);
    virtual int accept (
        SVC_HANDLER * = 0,
        ACE_PEER_ACCEPTOR_ADDR *remote_addr = 0,
        const ACE_Synch_Options &synch_options = ACE_Synch_Options::defaults,
        int restart = 1
        );
    virtual int cancel (void);
    virtual operator ACE_PEER_ACCEPTOR &() const;
    virtual ACE_PEER_ACCEPTOR &acceptor (void) const;
    ACE_Reactor *reactor (void) const;
    void reactor (ACE_Reactor *);
    void dump (void) const;
    ACE_ALLOC_HOOK_DECLARE;
  protected:
    virtual int activate_svc_handler (SVC_HANDLER *svc_handler);
    int shared_accept (
        SVC_HANDLER *svc_handler,
        ACE_PEER_ACCEPTOR_ADDR *remote_addr,
        ACE_Time_Value *timeout,
        int restart
        );
    int register_handler (
        SVC_HANDLER *svc_handler,
        const ACE_Synch_Options &options,
        int restart
        );
    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_input (ACE_HANDLE);
    virtual int handle_timeout (
        const ACE_Time_Value &tv,
        const void *arg
        );
    virtual int init (int argc, char *argv[]);
    virtual int fini (void);
    virtual int info (char **, size_t) const;
    virtual int suspend (void);
    virtual int resume (void);
  private:
    ACE_Reactor *reactor_;
    SVC_HANDLER *svc_handler_;
    int restart_;
    ACE_PEER_ACCEPTOR peer_acceptor_;
    ACE_Concurrency_Strategy<SVC_HANDLER> *concurrency_strategy_;
    int delete_concurrency_strategy_;
};

DESCRIPTION

This class works similarly to the regular acceptor except that this class doesn't need a Creation_Strategy (since the user supplies the SVC_HANDLER) or an Accept_Strategy (since this class only accepts one connection and then removes all traces (e.g., from the ACE_Reactor).

Initialization and termination methods.

ACE_Oneshot_Acceptor (void);
ACE_Oneshot_Acceptor (
    const ACE_PEER_ACCEPTOR_ADDR &,
    ACE_Reactor * = ACE_Service_Config::reactor (),
    ACE_Concurrency_Strategy<SVC_HANDLER> * = 0
    );
int open (
    const ACE_PEER_ACCEPTOR_ADDR &,
    ACE_Reactor * = ACE_Service_Config::reactor (),
    ACE_Concurrency_Strategy<SVC_HANDLER> * = 0
    );
virtual ~ACE_Oneshot_Acceptor (void);

Explicit factory operation.

virtual int accept (
    SVC_HANDLER * = 0,
    ACE_PEER_ACCEPTOR_ADDR *remote_addr = 0,
    const ACE_Synch_Options &synch_options = ACE_Synch_Options::defaults,
    int restart = 1
    );
virtual int cancel (void);
virtual operator ACE_PEER_ACCEPTOR &() const;
virtual ACE_PEER_ACCEPTOR &acceptor (void) const;
ACE_Reactor *reactor (void) const;
void reactor (ACE_Reactor *);
void dump (void) const;
ACE_ALLOC_HOOK_DECLARE;

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_input (ACE_HANDLE);
virtual int handle_timeout (
    const ACE_Time_Value &tv,
    const void *arg
    );

Dynamic linking hooks.

virtual int init (int argc, char *argv[]);
virtual int fini (void);
virtual int info (char **, size_t) const;

Service management hooks.

virtual int suspend (void);
virtual int resume (void);

AUTHOR

Doug Schmidt

LIBRARY

ace