#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 *thr_mgr = 0, ACE_Message_Queue<ACE_SYNCH_USE> *mq = 0, ACE_Reactor *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 ACE_Recyclable_State recycle_state (void) const;virtual int recycle_state (ACE_Recyclable_State new_state);virtual void cleanup_hint (void);virtual int init (int argc, ASYS_TCHAR *argv[]);virtual int fini (void);virtual int info (ASYS_TCHAR **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 const void *recycling_act (void) const;virtual int recycle (void * = 0);protected:ACE_PEER_STREAM peer_;int dynamic_;char closing_;ACE_Connection_Recycling_Strategy *recycler_;const void *recycling_act_;};
ACE_Svc_Handler (
ACE_Thread_Manager *thr_mgr = 0,
ACE_Message_Queue<ACE_SYNCH_USE> *mq = 0,
ACE_Reactor *reactor = ACE_Reactor::instance ()
);
thr_mgr and mq by passing them
down to the ACE_Task base class. The reactor is passed to
the ACE_Event_Handler.
virtual ~ACE_Svc_Handler (void);
virtual int open (void * = 0);
ACE_Acceptor or ACE_Connector.
virtual int close (u_long flags = 0);
virtual int idle (u_long flags = 0);
Svc_Handler
instead of closing it. If the object does not have a recycler,
it will be closed.
virtual ACE_Recyclable_State recycle_state (void) const;
virtual int recycle_state (ACE_Recyclable_State new_state);
Svc_Handler. If the object does not have a recycler, this call
will have no effect (and the accessor will return
ACE_RECYCLABLE_UNKNOWN).
virtual void cleanup_hint (void);
virtual int init (int argc, ASYS_TCHAR *argv[]);
virtual int fini (void);
virtual int info (ASYS_TCHAR **info_string, size_t length) const;
virtual int handle_close (
ACE_HANDLE = ACE_INVALID_HANDLE,
ACE_Reactor_Mask = ACE_Event_Handler::ALL_EVENTS_MASK
);
peer_ (to avoid descriptor leaks)
and to destroy this object (to avoid memory leaks)! If you
don't want this behavior make sure you override this method...
virtual int handle_timeout (const ACE_Time_Value &time, const void *);
Svc_Handler by calling handle_close.
virtual ACE_HANDLE get_handle (void) const;
peer_.
virtual void set_handle (ACE_HANDLE);
peer_.
ACE_PEER_STREAM &peer (void) const;
ACE_Acceptor::accept and ACE_Connector::connect factories
void *operator new (size_t n);
Svc_Handler is allocated dynamically.
virtual void destroy (void);
Svc_Handlers
(otherwise you will get memory leaks). In general, you should
call this method rather than delete since this method knows
whether or not the object was allocated dynamically, and can act
accordingly (i.e., deleting it if it was allocated dynamically).
void operator delete (void *);
destroy. Unfortunately, the C++ standard doesn't allow there
to be a public new and a private delete. It is a bad idea to
call this method directly, so use destroy instead, unless you
know for sure that you've allocated the object dynamically.
void shutdown (void);
void dump (void) const;
virtual void recycler (
ACE_Connection_Recycling_Strategy *recycler,
const void *recycling_act
);
recycling_act that is used during
purging and caching.
virtual ACE_Connection_Recycling_Strategy *recycler (void) const;
virtual const void *recycling_act (void) const;
virtual int recycle (void * = 0);