Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

ACE_Svc_Handler Class Template Reference

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

#include <Svc_Handler.h>

Inheritance diagram for ACE_Svc_Handler:

Inheritance graph
[legend]
Collaboration diagram for ACE_Svc_Handler:

Collaboration graph
[legend]
List of all members.

Public Types

typedef ACE_PEER_STREAM_ADDR addr_type
typedef ACE_PEER_STREAM stream_type

Public Methods

 ACE_Svc_Handler (ACE_Thread_Manager *thr_mgr=0, ACE_Message_Queue< ACE_SYNCH_USE > *mq=0, ACE_Reactor *reactor=ACE_Reactor::instance())
 Constructor initializes the <thr_mgr> and <mq> by passing them down to the <ACE_Task> base class. More...

virtual ~ACE_Svc_Handler (void)
 Destructor. More...

virtual int open (void *=0)
 Activate the client handler. This is typically called by the <ACE_Acceptor> or <ACE_Connector>. More...

virtual int close (u_long flags=0)
 Object termination hook -- application-specific cleanup code goes here. More...

virtual int idle (u_long flags=0)
 Call this method if you want to recycling the <Svc_Handler> instead of closing it. More...

virtual ACE_Recyclable_State recycle_state (void) const
 Call this method if you want to get/set the state of the <Svc_Handler>. More...

virtual int recycle_state (ACE_Recyclable_State new_state)
virtual void cleanup_hint (void **act_holder=0)
 When the svc_handle is no longer needed around as a hint, call this method. More...

virtual int init (int argc, ACE_TCHAR *argv[])
 Default version does no work and returns -1. Must be overloaded by application developer to do anything meaningful. More...

virtual int fini (void)
 Default version does no work and returns -1. Must be overloaded by application developer to do anything meaningful. More...

virtual int info (ACE_TCHAR **info_string, size_t length) const
 Default version does no work and returns -1. Must be overloaded by application developer to do anything meaningful. More...

virtual int handle_close (ACE_HANDLE=ACE_INVALID_HANDLE, ACE_Reactor_Mask=ACE_Event_Handler::ALL_EVENTS_MASK)
 Perform termination activities on the SVC_HANDLER. More...

virtual int handle_timeout (const ACE_Time_Value &time, const void *)
 Default behavior when timeouts occur is to close down the <Svc_Handler> by calling <handle_close>. More...

virtual ACE_HANDLE get_handle (void) const
 Get the underlying handle associated with the <peer_>. More...

virtual void set_handle (ACE_HANDLE)
 Set the underlying handle associated with the <peer_>. More...

ACE_PEER_STREAM & peer (void) const
 Returns the underlying PEER_STREAM. Used by <ACE_Acceptor::accept> and <ACE_Connector::connect> factories. More...

void * operator new (size_t n)
 Overloaded new operator. This method unobtrusively records if a <Svc_Handler> is allocated dynamically, which allows it to clean itself up correctly whether or not it's allocated statically or dynamically. More...

void * operator new (size_t n, void *p)
 This operator permits "placement new" on a per-object basis. More...

virtual void destroy (void)
 Call this to free up dynamically allocated <Svc_Handlers> (otherwise you will get memory leaks). More...

void operator delete (void *)
 This really should be private so that users are forced to call <destroy>. More...

void operator delete (void *, void *)
 This operator is necessary to complement the class-specific operator new above. More...

void shutdown (void)
 Close down the descriptor and unregister from the Reactor. More...

void dump (void) const
 Dump the state of an object. More...

virtual void recycler (ACE_Connection_Recycling_Strategy *recycler, const void *recycling_act)
 Set the recycler and the <recycling_act> that is used during purging and caching. More...

virtual ACE_Connection_Recycling_Strategyrecycler (void) const
 Get the recycler. More...

virtual const void * recycling_act (void) const
 Get the recycling act. More...

virtual int recycle (void *=0)
 Upcall made by the recycler when it is about to recycle the connection. More...


Protected Attributes

ACE_PEER_STREAM peer_
 Maintain connection with client. More...

int dynamic_
 Have we been dynamically created? More...

char closing_
 Keeps track of whether we are in the process of closing (required to avoid circular calls to <handle_close>). More...

ACE_Connection_Recycling_Strategyrecycler_
 Pointer to the connection recycler. More...

const void * recycling_act_
 Asynchronous Completion Token (ACT) to be used to when talking to the recycler. More...


Detailed Description

template<ACE_PEER_STREAM_1, ACE_SYNCH_DECL>
class ACE_Svc_Handler<, >

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

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.


Member Typedef Documentation

template<ACE_PEER_STREAM_1 , ACE_SYNCH_DECL >
typedef ACE_PEER_STREAM_ADDR ACE_Svc_Handler::addr_type
 

template<ACE_PEER_STREAM_1 , ACE_SYNCH_DECL >
typedef ACE_PEER_STREAM ACE_Svc_Handler::stream_type
 


Constructor & Destructor Documentation

template<PR_ST_1 , ACE_SYNCH_DECL >
ACE_Svc_Handler<, >::ACE_Svc_Handler ACE_Thread_Manager   tm = 0,
ACE_Message_Queue< ACE_SYNCH_USE > *    mq = 0,
ACE_Reactor   reactor = ACE_Reactor::instance ()
 

Constructor initializes the <thr_mgr> and <mq> by passing them down to the <ACE_Task> base class.

The <reactor> is passed to the <ACE_Event_Handler>.

template<PR_ST_1 , ACE_SYNCH_DECL >
ACE_Svc_Handler<, >::~ACE_Svc_Handler void    [virtual]
 

Destructor.


Member Function Documentation

template<PR_ST_1 , ACE_SYNCH_DECL >
void ACE_Svc_Handler<, >::cleanup_hint void **    act_holder = 0 [virtual]
 

When the svc_handle is no longer needed around as a hint, call this method.

In addition, reset <*act_holder> to zero if <act_holder != 0>.

template<ACE_PEER_STREAM_1 , ACE_SYNCH_DECL >
virtual int ACE_Svc_Handler<, >::close u_long    flags = 0 [virtual]
 

Object termination hook -- application-specific cleanup code goes here.

This function is called by the idle() function if the object does not have a ACE_Connection_Recycling_Strategy associated with it. Also, due to this class's derivation from <ACE_Task>, <close> is also called when a thread activated with this object exits. See <ACE_Task::close> for further details. The default action of this function is to call <handle_close> with the default arguments.

Reimplemented from ACE_Task_Base.

template<PR_ST_1 , ACE_SYNCH_DECL >
void ACE_Svc_Handler<, >::destroy void    [virtual]
 

Call this to free up dynamically allocated <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).

template<PR_ST_1 , ACE_SYNCH_DECL >
void ACE_Svc_Handler<, >::dump void    const
 

Dump the state of an object.

Reimplemented from ACE_Task.

Reimplemented in ACE_Buffered_Svc_Handler.

template<PR_ST_1 , ACE_SYNCH_DECL >
int ACE_Svc_Handler<, >::fini void    [virtual]
 

Default version does no work and returns -1. Must be overloaded by application developer to do anything meaningful.

Reimplemented from ACE_Shared_Object.

template<PR_ST_1 , ACE_SYNCH_DECL >
ACE_HANDLE ACE_Svc_Handler<, >::get_handle void    const [virtual]
 

Get the underlying handle associated with the <peer_>.

Reimplemented from ACE_Event_Handler.

template<PR_ST_1 , ACE_SYNCH_DECL >
int ACE_Svc_Handler<, >::handle_close ACE_HANDLE    fd = ACE_INVALID_HANDLE,
ACE_Reactor_Mask    close_mask = ACE_Event_Handler::ALL_EVENTS_MASK
[virtual]
 

Perform termination activities on the SVC_HANDLER.

The default behavior is to close down the <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...

Reimplemented from ACE_Event_Handler.

template<PR_ST_1 , ACE_SYNCH_DECL >
int ACE_Svc_Handler<, >::handle_timeout const ACE_Time_Value   time,
const void *    arg
[virtual]
 

Default behavior when timeouts occur is to close down the <Svc_Handler> by calling <handle_close>.

Reimplemented from ACE_Event_Handler.

Reimplemented in ACE_Buffered_Svc_Handler.

template<PR_ST_1 , ACE_SYNCH_DECL >
int ACE_Svc_Handler<, >::idle u_long    flags = 0 [virtual]
 

Call this method if you want to recycling the <Svc_Handler> instead of closing it.

If the object does not have a recycler, it will be closed.

template<PR_ST_1 , ACE_SYNCH_DECL >
int ACE_Svc_Handler<, >::info ACE_TCHAR **    info_string,
size_t    length
const [virtual]
 

Default version does no work and returns -1. Must be overloaded by application developer to do anything meaningful.

Reimplemented from ACE_Shared_Object.

template<PR_ST_1 , ACE_SYNCH_DECL >
int ACE_Svc_Handler<, >::init int    argc,
ACE_TCHAR   argv[]
[virtual]
 

Default version does no work and returns -1. Must be overloaded by application developer to do anything meaningful.

Reimplemented from ACE_Shared_Object.

template<PR_ST_1 , ACE_SYNCH_DECL >
int ACE_Svc_Handler<, >::open void *    a = 0 [virtual]
 

Activate the client handler. This is typically called by the <ACE_Acceptor> or <ACE_Connector>.

Reimplemented from ACE_Task_Base.

template<PR_ST_1 , ACE_SYNCH_DECL >
void ACE_Svc_Handler<, >::operator delete void *   ,
void *   
 

This operator is necessary to complement the class-specific operator new above.

Unfortunately, it's not portable to all C++ compilers...

template<PR_ST_1 , ACE_SYNCH_DECL >
void ACE_Svc_Handler<, >::operator delete void *    obj
 

This really should be private so that users are forced to call <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.

template<PR_ST_1 , ACE_SYNCH_DECL >
void * ACE_Svc_Handler<, >::operator new size_t    n,
void *    p
 

This operator permits "placement new" on a per-object basis.

template<PR_ST_1 , ACE_SYNCH_DECL >
void * ACE_Svc_Handler<, >::operator new size_t    n
 

Overloaded new operator. This method unobtrusively records if a <Svc_Handler> is allocated dynamically, which allows it to clean itself up correctly whether or not it's allocated statically or dynamically.

template<PR_ST_1 , ACE_SYNCH_DECL >
ACE_PEER_STREAM & ACE_Svc_Handler<, >::peer void    const
 

Returns the underlying PEER_STREAM. Used by <ACE_Acceptor::accept> and <ACE_Connector::connect> factories.

template<PR_ST_1 , ACE_SYNCH_DECL >
int ACE_Svc_Handler<, >::recycle void *    = 0 [virtual]
 

Upcall made by the recycler when it is about to recycle the connection.

This gives the object a chance to prepare itself for recycling. Return 0 if the object is ready for recycling, -1 on failures.

template<PR_ST_1 , ACE_SYNCH_DECL >
int ACE_Svc_Handler<, >::recycle_state ACE_Recyclable_State    new_state [virtual]
 

template<PR_ST_1 , ACE_SYNCH_DECL >
ACE_Recyclable_State ACE_Svc_Handler<, >::recycle_state void    const [virtual]
 

Call this method if you want to get/set the state of the <Svc_Handler>.

If the object does not have a recycler, this call will have no effect (and the accessor will return ACE_RECYCLABLE_UNKNOWN).

template<PR_ST_1 , ACE_SYNCH_DECL >
ACE_Connection_Recycling_Strategy * ACE_Svc_Handler<, >::recycler void    const [virtual]
 

Get the recycler.

template<PR_ST_1 , ACE_SYNCH_DECL >
void ACE_Svc_Handler<, >::recycler ACE_Connection_Recycling_Strategy   recycler,
const void *    recycling_act
[virtual]
 

Set the recycler and the <recycling_act> that is used during purging and caching.

template<PR_ST_1 , ACE_SYNCH_DECL >
const void * ACE_Svc_Handler<, >::recycling_act void    const [virtual]
 

Get the recycling act.

template<PR_ST_1 , ACE_SYNCH_DECL >
void ACE_Svc_Handler<, >::set_handle ACE_HANDLE    h [virtual]
 

Set the underlying handle associated with the <peer_>.

Reimplemented from ACE_Event_Handler.

template<PR_ST_1 , ACE_SYNCH_DECL >
void ACE_Svc_Handler<, >::shutdown void   
 

Close down the descriptor and unregister from the Reactor.


Member Data Documentation

template<ACE_PEER_STREAM_1 , ACE_SYNCH_DECL >
char ACE_Svc_Handler::closing_ [protected]
 

Keeps track of whether we are in the process of closing (required to avoid circular calls to <handle_close>).

template<ACE_PEER_STREAM_1 , ACE_SYNCH_DECL >
int ACE_Svc_Handler::dynamic_ [protected]
 

Have we been dynamically created?

template<ACE_PEER_STREAM_1 , ACE_SYNCH_DECL >
ACE_PEER_STREAM ACE_Svc_Handler::peer_ [protected]
 

Maintain connection with client.

template<ACE_PEER_STREAM_1 , ACE_SYNCH_DECL >
ACE_Connection_Recycling_Strategy* ACE_Svc_Handler::recycler_ [protected]
 

Pointer to the connection recycler.

template<ACE_PEER_STREAM_1 , ACE_SYNCH_DECL >
const void* ACE_Svc_Handler::recycling_act_ [protected]
 

Asynchronous Completion Token (ACT) to be used to when talking to the recycler.


The documentation for this class was generated from the following files:
Generated on Thu Oct 10 17:12:55 2002 for ACE by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001