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

ACE_Oneshot_Acceptor< SVC_HANDLER, > Class Template Reference

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

#include <Acceptor.h>

Inheritance diagram for ACE_Oneshot_Acceptor< SVC_HANDLER, >:

Inheritance graph
[legend]
Collaboration diagram for ACE_Oneshot_Acceptor< SVC_HANDLER, >:

Collaboration graph
[legend]
List of all members.

Public Types

typedef ACE_PEER_ACCEPTOR_ADDR addr_type
typedef ACE_PEER_ACCEPTOR acceptor_type
typedef SVC_HANDLER handler_type
typedef ACE_TYPENAME SVC_HANDLER::stream_type stream_type

Public Methods

 ACE_Oneshot_Acceptor (void)
 Constructor.

 ACE_Oneshot_Acceptor (const ACE_PEER_ACCEPTOR_ADDR &local_addr, ACE_Reactor *reactor=ACE_Reactor::instance(), ACE_Concurrency_Strategy< SVC_HANDLER > *=0)
int open (const ACE_PEER_ACCEPTOR_ADDR &, ACE_Reactor *reactor=ACE_Reactor::instance(), ACE_Concurrency_Strategy< SVC_HANDLER > *=0)
virtual ~ACE_Oneshot_Acceptor (void)
 Close down the <Oneshot_Acceptor>.

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, int reset_new_handle=0)
virtual int cancel (void)
 Cancel a oneshot acceptor that was started asynchronously.

virtual operator ACE_PEER_ACCEPTOR & () const
 Return the underlying <PEER_ACCEPTOR> object.

virtual ACE_PEER_ACCEPTOR & acceptor (void) const
 Return the underlying <PEER_ACCEPTOR> object.

virtual int close (void)
 Close down the <Oneshot_Acceptor>.

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


Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks.


Protected Methods

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 reset_new_handle)
virtual ACE_HANDLE get_handle (void) const
 Returns the listening acceptor's <ACE_HANDLE>.

virtual int handle_close (ACE_HANDLE=ACE_INVALID_HANDLE, ACE_Reactor_Mask=ACE_Event_Handler::ALL_EVENTS_MASK)
virtual int handle_input (ACE_HANDLE)
virtual int handle_timeout (const ACE_Time_Value &tv, const void *arg)
 Called when an acceptor times out...

virtual int init (int argc, ACE_TCHAR *argv[])
virtual int fini (void)
virtual int info (ACE_TCHAR **, size_t) const
 Default version returns address info in <buf>.

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

Private Methods

int register_handler (SVC_HANDLER *svc_handler, const ACE_Synch_Options &options, int restart)

Private Attributes

SVC_HANDLER * svc_handler_
 Hold the svc_handler_ across asynchrony boundaries.

int restart_
 Hold the restart flag across asynchrony boundaries.

ACE_PEER_ACCEPTOR peer_acceptor_
 Factory that establishes connections passively.

ACE_Concurrency_Strategy<
SVC_HANDLER > * 
concurrency_strategy_
 Concurrency strategy for an Acceptor.

int delete_concurrency_strategy_

Detailed Description

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1>
class ACE_Oneshot_Acceptor< SVC_HANDLER, >

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

This class works similarly to the regular <ACE_Acceptor>, with the following differences: 1. This class doesn't automagically register <this> with the <ACE_Reactor> since it expects to have its <accept> method called directly. However, it stashes the <ACE_Reactor> pointer away in case it's needed later to finish accepting a connection asynchronously. 2. The class doesn't need an <ACE_Creation_Strategy> (since the user supplies the SVC_HANDLER) or an <ACE_Accept_Strategy> (since this class only accepts one connection and then removes all traces of itself from the <ACE_Reactor> if it was registered for asynchronous accepts).


Member Typedef Documentation

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
typedef ACE_PEER_ACCEPTOR ACE_Oneshot_Acceptor< SVC_HANDLER, >::acceptor_type
 

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
typedef ACE_PEER_ACCEPTOR_ADDR ACE_Oneshot_Acceptor< SVC_HANDLER, >::addr_type
 

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
typedef SVC_HANDLER ACE_Oneshot_Acceptor< SVC_HANDLER, >::handler_type
 

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
typedef ACE_TYPENAME SVC_HANDLER::stream_type ACE_Oneshot_Acceptor< SVC_HANDLER, >::stream_type
 


Constructor & Destructor Documentation

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
ACE_Oneshot_Acceptor< SVC_HANDLER, >::ACE_Oneshot_Acceptor void   
 

Constructor.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
ACE_Oneshot_Acceptor< SVC_HANDLER, >::ACE_Oneshot_Acceptor const ACE_PEER_ACCEPTOR_ADDR &    local_addr,
ACE_Reactor   reactor = ACE_Reactor::instance(),
ACE_Concurrency_Strategy< SVC_HANDLER > *    = 0
 

Initialize the appropriate strategies for concurrency and then open the <peer_acceptor> at the designated <local_addr>. Note that unlike the <ACE_Acceptor> and <ACE_Strategy_Acceptor>, this method does NOT register <this> acceptor with the <reactor> at this point -- it just stashes the <reactor> away in case it's needed later.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
ACE_Oneshot_Acceptor< SVC_HANDLER, >::~ACE_Oneshot_Acceptor void    [virtual]
 

Close down the <Oneshot_Acceptor>.


Member Function Documentation

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
int ACE_Oneshot_Acceptor< SVC_HANDLER, >::accept SVC_HANDLER *    = 0,
ACE_PEER_ACCEPTOR_ADDR *    remote_addr = 0,
const ACE_Synch_Options   synch_options = ACE_Synch_Options::defaults,
int    restart = 1,
int    reset_new_handle = 0
[virtual]
 

Create a <SVC_HANDLER>, accept the connection into the <SVC_HANDLER>, and activate the <SVC_HANDLER>.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
ACE_PEER_ACCEPTOR & ACE_Oneshot_Acceptor< SVC_HANDLER, >::acceptor void    const [virtual]
 

Return the underlying <PEER_ACCEPTOR> object.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
int ACE_Oneshot_Acceptor< SVC_HANDLER, >::activate_svc_handler SVC_HANDLER *    svc_handler [protected, virtual]
 

Bridge method for activating a <svc_handler> with the appropriate concurrency strategy. Default behavior is to activate the <SVC_HANDLER> as a "passive object." However, subclasses can override this strategy to do more sophisticated concurrency activations (such as creating the <SVC_HANDLER> as an "active object" via multi-threading or multi-processing).

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
int ACE_Oneshot_Acceptor< SVC_HANDLER, >::cancel void    [virtual]
 

Cancel a oneshot acceptor that was started asynchronously.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
int ACE_Oneshot_Acceptor< SVC_HANDLER, >::close void    [virtual]
 

Close down the <Oneshot_Acceptor>.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
void ACE_Oneshot_Acceptor< SVC_HANDLER, >::dump void    const
 

Dump the state of an object.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
int ACE_Oneshot_Acceptor< SVC_HANDLER, >::fini void    [protected, 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<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
ACE_HANDLE ACE_Oneshot_Acceptor< SVC_HANDLER, >::get_handle void    const [protected, virtual]
 

Returns the listening acceptor's <ACE_HANDLE>.

Reimplemented from ACE_Event_Handler.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
int ACE_Oneshot_Acceptor< SVC_HANDLER, >::handle_close ACE_HANDLE    = ACE_INVALID_HANDLE,
ACE_Reactor_Mask    = ACE_Event_Handler::ALL_EVENTS_MASK
[protected, virtual]
 

Perform termination activities when <this> is removed from the <reactor>.

Reimplemented from ACE_Event_Handler.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
int ACE_Oneshot_Acceptor< SVC_HANDLER, >::handle_input ACE_HANDLE    [protected, virtual]
 

Accept one connection from a client and activates the SVC_HANDLER.

Reimplemented from ACE_Event_Handler.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
int ACE_Oneshot_Acceptor< SVC_HANDLER, >::handle_timeout const ACE_Time_Value   tv,
const void *    arg
[protected, virtual]
 

Called when an acceptor times out...

Reimplemented from ACE_Event_Handler.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
int ACE_Oneshot_Acceptor< SVC_HANDLER, >::info ACE_TCHAR **   ,
size_t   
const [protected, virtual]
 

Default version returns address info in <buf>.

Reimplemented from ACE_Shared_Object.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
int ACE_Oneshot_Acceptor< SVC_HANDLER, >::init int    argc,
ACE_TCHAR   argv[]
[protected, 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<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
int ACE_Oneshot_Acceptor< SVC_HANDLER, >::open const ACE_PEER_ACCEPTOR_ADDR &   ,
ACE_Reactor   reactor = ACE_Reactor::instance(),
ACE_Concurrency_Strategy< SVC_HANDLER > *    = 0
 

Initialize the appropriate strategies for concurrency and then open the <peer_acceptor> at the designated <local_addr>. Note that unlike the <ACE_Acceptor> and <ACE_Strategy_Acceptor>, this method does NOT register <this> acceptor with the <reactor> at this point -- it just stashes the <reactor> away in case it's needed later.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
ACE_Oneshot_Acceptor< SVC_HANDLER, >::operator ACE_PEER_ACCEPTOR &   [virtual]
 

Return the underlying <PEER_ACCEPTOR> object.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
int ACE_Oneshot_Acceptor< SVC_HANDLER, >::register_handler SVC_HANDLER *    svc_handler,
const ACE_Synch_Options   options,
int    restart
[private]
 

Insert ourselves into the <ACE_Reactor> so that we can continue accepting this connection asynchronously. This method should NOT be called by developers directly.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
int ACE_Oneshot_Acceptor< SVC_HANDLER, >::resume void    [protected, virtual]
 

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

Reimplemented from ACE_Service_Object.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
int ACE_Oneshot_Acceptor< SVC_HANDLER, >::shared_accept SVC_HANDLER *    svc_handler,
ACE_PEER_ACCEPTOR_ADDR *    remote_addr,
ACE_Time_Value   timeout,
int    restart,
int    reset_new_handle
[protected]
 

Factors out the code shared between the <accept> and <handle_input> methods.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
int ACE_Oneshot_Acceptor< SVC_HANDLER, >::suspend void    [protected, virtual]
 

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

Reimplemented from ACE_Service_Object.


Member Data Documentation

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
ACE_Oneshot_Acceptor< SVC_HANDLER, >::ACE_ALLOC_HOOK_DECLARE
 

Declare the dynamic allocation hooks.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
ACE_Concurrency_Strategy<SVC_HANDLER>* ACE_Oneshot_Acceptor< SVC_HANDLER, >::concurrency_strategy_ [private]
 

Concurrency strategy for an Acceptor.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
int ACE_Oneshot_Acceptor< SVC_HANDLER, >::delete_concurrency_strategy_ [private]
 

1 if Acceptor created the concurrency strategy and thus should delete it, else 0.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
ACE_PEER_ACCEPTOR ACE_Oneshot_Acceptor< SVC_HANDLER, >::peer_acceptor_ [private]
 

Factory that establishes connections passively.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
int ACE_Oneshot_Acceptor< SVC_HANDLER, >::restart_ [private]
 

Hold the restart flag across asynchrony boundaries.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
SVC_HANDLER* ACE_Oneshot_Acceptor< SVC_HANDLER, >::svc_handler_ [private]
 

Hold the svc_handler_ across asynchrony boundaries.


The documentation for this class was generated from the following files:
Generated on Fri Apr 2 16:51:06 2004 for ACE by doxygen1.2.18