NAME

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

SYNOPSIS

#include <ace/Svc_Handler.h >

template<ACE_PEER_STREAM_1, ACE_SYNCH_DECL> class ACE_Svc_Handler : public ACE_Task<ACE_SYNCH_USE> { public: ACE_Svc_Handler ( ACE_Thread_Manager * = 0, ACE_Message_Queue<ACE_SYNCH_USE> * = 0, ACE_Reactor * = ACE_Reactor::instance () ); virtual ~ACE_Svc_Handler (void); virtual int open (void * = 0); virtual int close (u_long flags = 0); virtual int idle (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::ALL_EVENTS_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; void *operator new (size_t n); virtual void destroy (void); void operator delete (void *); void shutdown (void); void dump (void) const; virtual void recycler ( ACE_Connection_Recycling_Strategy *recycler, const void *recycling_act ); virtual ACE_Connection_Recycling_Strategy *recycler (void) const; virtual int recycle (void * = 0); private: ACE_PEER_STREAM peer_; typedef ACE_TSS_Singleton<ACE_Dynamic, ACE_SYNCH_NULL_MUTEX> DYNAMIC; char dynamic_; char closing_; ACE_Connection_Recycling_Strategy *recycler_; const void *recycling_act_; };

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_USE> * = 0,
    ACE_Reactor * = ACE_Reactor::instance ()
    );

virtual ~ACE_Svc_Handler (void);

virtual int open (void * = 0);

virtual int close (u_long flags = 0);

virtual int idle (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::ALL_EVENTS_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;

void *operator new (size_t n);

virtual void destroy (void);

void operator delete (void *);

void shutdown (void);

void dump (void) const;

Accessors to set/get the connection recycler.

virtual void recycler (
    ACE_Connection_Recycling_Strategy *recycler,
    const void *recycling_act
    );

virtual ACE_Connection_Recycling_Strategy *recycler (void) const;

virtual int recycle (void * = 0);

AUTHOR

Doug Schmidt and Irfan Pyrarli.

LIBRARY

ace