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

ACE_Oneshot_Acceptor 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:

Inheritance graph
[legend]
Collaboration diagram for ACE_Oneshot_Acceptor:

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. More...

 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>. More...

int 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>. More...

virtual ~ACE_Oneshot_Acceptor (void)
 Close down the <Oneshot_Acceptor>. More...

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)
 Create a <SVC_HANDLER>, accept the connection into the <SVC_HANDLER>, and activate the <SVC_HANDLER>. More...

virtual int cancel (void)
 Cancel a oneshot acceptor that was started asynchronously. More...

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

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

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

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


Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks. More...


Protected Methods

virtual int activate_svc_handler (SVC_HANDLER *svc_handler)
 Bridge method for activating a <svc_handler> with the appropriate concurrency strategy. More...

int shared_accept (SVC_HANDLER *svc_handler, ACE_PEER_ACCEPTOR_ADDR *remote_addr, ACE_Time_Value *timeout, int restart, int reset_new_handle)
 Factors out the code shared between the <accept> and <handle_input> methods. More...

virtual ACE_HANDLE get_handle (void) const
 Returns the listening acceptor's <ACE_HANDLE>. More...

virtual int handle_close (ACE_HANDLE=ACE_INVALID_HANDLE, ACE_Reactor_Mask=ACE_Event_Handler::ALL_EVENTS_MASK)
 Perform termination activities when <this> is removed from the <reactor>. More...

virtual int handle_input (ACE_HANDLE)
 Accept one connection from a client and activates the SVC_HANDLER. More...

virtual int handle_timeout (const ACE_Time_Value &tv, const void *arg)
 Called when an acceptor times out... 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 **, size_t) const
 Default version returns address info in <buf>. More...

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

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


Private Methods

int register_handler (SVC_HANDLER *svc_handler, const ACE_Synch_Options &options, int restart)
 Insert ourselves into the <ACE_Reactor> so that we can continue accepting this connection asynchronously. More...


Private Attributes

SVC_HANDLER * svc_handler_
 Hold the svc_handler_ across asynchrony boundaries. More...

int restart_
 Hold the restart flag across asynchrony boundaries. More...

ACE_PEER_ACCEPTOR peer_acceptor_
 Factory that establishes connections passively. More...

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

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


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::acceptor_type
 

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

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

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
typedef ACE_TYPENAME SVC_HANDLER::stream_type ACE_Oneshot_Acceptor::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 > *    cs = 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 *    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    handle = ACE_INVALID_HANDLE,
ACE_Reactor_Mask    close_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    fd [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 **    strp,
size_t    length
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 &    local_addr,
ACE_Reactor   reactor = ACE_Reactor::instance (),
ACE_Concurrency_Strategy< SVC_HANDLER > *    con_s = 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 &   const [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   synch_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::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::concurrency_strategy_ [private]
 

Concurrency strategy for an Acceptor.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
int ACE_Oneshot_Acceptor::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::peer_acceptor_ [private]
 

Factory that establishes connections passively.

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

Hold the restart flag across asynchrony boundaries.

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

Hold the svc_handler_ across asynchrony boundaries.


The documentation for this class was generated from the following files:
Generated on Tue Aug 20 15:24:25 2002 for ACE by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001