NAME

ACE_Svc_Handler - Defines the interface for a service that exchanges data with its connected peer.

SYNOPSIS


#include <ace/ACE_Svc_Handler.h >


template<ACE_PEER_STREAM_1, ACE_SYNCH_1>
class ACE_Svc_Handler : public ACE_Task<ACE_SYNCH_2>
{
  public:
    ACE_Svc_Handler (
        ACE_Thread_Manager * = 0,
        ACE_Message_Queue<ACE_SYNCH_2> * = 0,
        ACE_Reactor * = ACE_Service_Config::reactor ()
        );
    virtual ~ACE_Svc_Handler (void);
    virtual int open (void * = 0);
    virtual int close (u_long flags = 0);
    virtual int init (int argc, char *argv[]);
    virtual int fini (void);
    virtual int info (char **info_string, size_t length) const;
    virtual int handle_close (
        ACE_HANDLE = ACE_INVALID_HANDLE,
        ACE_Reactor_Mask = ACE_Event_Handler::RWE_MASK
        );
    virtual int handle_timeout (
        const ACE_Time_Value &time,
        const void *
        );
    virtual ACE_HANDLE get_handle (void) const;
    virtual void set_handle (ACE_HANDLE);
    ACE_PEER_STREAM &peer (void) const;
    operator ACE_PEER_STREAM &();
    virtual int put (ACE_Message_Block *, ACE_Time_Value *tv = 0);
    ACE_Reactor *reactor (void) const;
    void reactor (ACE_Reactor *);
    virtual void destroy (void);
    void *operator new (size_t n);
    void dump (void) const;
    void operator delete (void *);
    virtual int svc (void);
  private:
    void shutdown (void);
    ACE_PEER_STREAM peer_;
    ACE_Reactor *reactor_;
    static ACE_Dynamic *instance (void);
    char dynamic_;
    static ACE_Thread_Mutex ace_svc_handler_lock_;
};

DESCRIPTION

This class provides a well-defined interface that the Acceptor and Connector pattern factories use as their target. Typically, client applications will subclass ACE_Svc_Handler and do all the interesting work in the subclass. One thing that the ACE_Svc_Handler does contain is a PEER_STREAM endpoint that is initialized by an ACE_Acceptor or ACE_Connector when a connection is established successfully. This endpoint is used to exchange data between a ACE_Svc_Handler and the peer it is connected with.

Initialization and termination methods.

ACE_Svc_Handler (
    ACE_Thread_Manager * = 0,
    ACE_Message_Queue<ACE_SYNCH_2> * = 0,
    ACE_Reactor * = ACE_Service_Config::reactor ()
    );
virtual ~ACE_Svc_Handler (void);
virtual int open (void * = 0);
virtual int close (u_long flags = 0);

Dynamic linking hooks.

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

Demultiplexing hooks.

virtual int handle_close (
    ACE_HANDLE = ACE_INVALID_HANDLE,
    ACE_Reactor_Mask = ACE_Event_Handler::RWE_MASK
    );
virtual int handle_timeout (const ACE_Time_Value &time, const void *);
virtual ACE_HANDLE get_handle (void) const;
virtual void set_handle (ACE_HANDLE);
ACE_PEER_STREAM &peer (void) const;
operator ACE_PEER_STREAM &();
virtual int put (ACE_Message_Block *, ACE_Time_Value *tv = 0);
ACE_Reactor *reactor (void) const;
void reactor (ACE_Reactor *);
virtual void destroy (void);
void *operator new (size_t n);
void dump (void) const;

AUTHOR

Doug Schmidt and Irfan Pyrarli.

LIBRARY

ace