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

# ACE_Acceptor Class Template Reference

Abstract factory for creating a service handler (SVC_HANDLER), accepting into the SVC_HANDLER, and activating the SVC_HANDLER. More...

`#include <Acceptor.h>`

Inheritance diagram for ACE_Acceptor:

[legend]
Collaboration diagram for ACE_Acceptor:

[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_Acceptor (ACE_Reactor *=0, int use_select=1)
| "Do-nothing" constructor. More...
| ACE_Acceptor (const ACE_PEER_ACCEPTOR_ADDR &local_addr, ACE_Reactor *=ACE_Reactor::instance(), int flags=0, int use_select=1, int reuse_addr=1)
virtual int | open (const ACE_PEER_ACCEPTOR_ADDR &local_addr, ACE_Reactor *reactor=ACE_Reactor::instance(), int flags=0, int use_select=1, int reuse_addr=1)
virtual | ~ACE_Acceptor (void)
| Close down the Acceptor's resources. 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 ACE_HANDLE | get_handle (void) const
| Returns the listening acceptor's <ACE_HANDLE>. More...
virtual int | close (void)
| Close down the Acceptor. More...
void | dump (void) const
| Dump the state of an object. More...
virtual int | suspend (void)
| This method calls <Reactor::suspend>. More...
virtual int | resume (void)
| This method calls <Reactor::resume>. More...
## Public Attributes
| ACE_ALLOC_HOOK_DECLARE
| Declare the dynamic allocation hooks. More...
## Protected Methods
virtual int | make_svc_handler (SVC_HANDLER *&sh)
virtual int | accept_svc_handler (SVC_HANDLER *svc_handler)
virtual int | activate_svc_handler (SVC_HANDLER *svc_handler)
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)
| Accepts all pending connections from clients, and creates and activates SVC_HANDLERs. 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)
| Calls <handle_close>. More...
virtual int | info (ACE_TCHAR **buf, size_t) const
| Default version returns address info in <buf>. More...
## Protected Attributes
ACE_PEER_ACCEPTOR | peer_acceptor_
| Concrete factory for accepting connections from clients... More...
ACE_PEER_ACCEPTOR_ADDR | peer_acceptor_addr_
| Needed to reopen the socket if <accept> fails. More...
int | flags_
int | use_select_
| Flag that indicates whether it shall use <select> in the <accept>-loop. More...
int | reuse_addr_
| Needed to reopen the socket if <accept> fails. More...

## Detailed Description

### template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1>
class ACE_Acceptor< SVC_HANDLER, >

Abstract factory for creating a service handler (SVC_HANDLER), accepting into the SVC_HANDLER, and activating the SVC_HANDLER.

Implements the basic strategy for passively establishing connections with clients. An ACE_Acceptor is parameterized by concrete types that conform to the interfaces of PEER_ACCEPTOR and SVC_HANDLER. The PEER_ACCEPTOR is instantiated with a transport mechanism that passively establishes connections. The SVC_HANDLER is instantiated with a concrete type that performs the application-specific service. An ACE_Acceptor inherits from ACE_Service_Object, which in turn inherits from ACE_Event_Handler. This enables the ACE_Reactor to dispatch the ACE_Acceptor's handle_input method when connection events occur. The handle_input method performs the ACE_Acceptor's default creation, connection establishment, and service activation strategies. These strategies can be overridden by subclasses individually or as a group.

## Member Typedef Documentation

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

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

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

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

## Constructor & Destructor Documentation

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
ACE_Acceptor< SVC_HANDLER, >::ACE_Acceptor | ( | ACE_Reactor * | = 0,
|  | int | use_select = 1
| ) |

| "Do-nothing" constructor.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
ACE_Acceptor< SVC_HANDLER, >::ACE_Acceptor | ( | const ACE_PEER_ACCEPTOR_ADDR & | local_addr,
|  | ACE_Reactor * | = ACE_Reactor::instance (),
|  | int | flags = 0,
|  | int | use_select = 1,
|  | int | reuse_addr = 1
| ) |

| Initialize and register <this> with the Reactor and listen for connection requests at the designated <local_addr>. <flags> indicates how <SVC_HANDLER>'s should be initialized prior to being activated. Right now, the only flag that is processed is <ACE_NONBLOCK>, which enabled non-blocking I/O on the <SVC_HANDLER> when it is opened. If <use_select> is non-zero then <select> is used to determine when to break out of the <accept> loop. <reuse_addr> is passed down to the <PEER_ACCEPTOR>. If it is non-zero this will allow the OS to reuse this listen port.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
virtual ACE_Acceptor< SVC_HANDLER, >::~ACE_Acceptor | ( | void |  | ) | `[virtual]`

| Close down the Acceptor's resources.

## Member Function Documentation

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
virtual int ACE_Acceptor< SVC_HANDLER, >::accept_svc_handler | ( | SVC_HANDLER * | svc_handler | ) | `[protected, virtual]`

| Bridge method for accepting the new connection into the <svc_handler>. The default behavior delegates to the PEER_ACCEPTOR::accept. Reimplemented in ACE_Strategy_Acceptor.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
virtual ACE_PEER_ACCEPTOR& ACE_Acceptor< SVC_HANDLER, >::acceptor | ( | void |  | ) | const`[virtual]`

| Return the underlying PEER_ACCEPTOR object. Reimplemented in ACE_Strategy_Acceptor.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
virtual int ACE_Acceptor< SVC_HANDLER, >::activate_svc_handler | ( | SVC_HANDLER * | svc_handler | ) | `[protected, virtual]`

| Bridge method for activating a <svc_handler> with the appropriate concurrency strategy. The default behavior of this method is to activate the SVC_HANDLER by calling its <open> method (which allows the SVC_HANDLER to define its own concurrency strategy). However, subclasses can override this strategy to do more sophisticated concurrency activations (such as making the SVC_HANDLER as an "active object" via multi-threading or multi-processing). Reimplemented in ACE_Strategy_Acceptor.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
virtual int ACE_Acceptor< SVC_HANDLER, >::close | ( | void |  | ) | `[virtual]`

| Close down the Acceptor.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
void ACE_Acceptor< SVC_HANDLER, >::dump | ( | void |  | ) | const

| Dump the state of an object. Reimplemented in ACE_Strategy_Acceptor.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
virtual int ACE_Acceptor< SVC_HANDLER, >::fini | ( | void |  | ) | `[protected, virtual]`

| Calls <handle_close>. Reimplemented from ACE_Shared_Object. Reimplemented in ACE_Strategy_Acceptor.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
virtual ACE_HANDLE ACE_Acceptor< SVC_HANDLER, >::get_handle | ( | void |  | ) | const`[virtual]`

| Returns the listening acceptor's <ACE_HANDLE>. Reimplemented from ACE_Event_Handler. Reimplemented in ACE_Strategy_Acceptor.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
virtual int ACE_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. Reimplemented in ACE_Strategy_Acceptor.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
virtual int ACE_Acceptor< SVC_HANDLER, >::handle_input | ( | ACE_HANDLE | fd | ) | `[protected, virtual]`

| Accepts all pending connections from clients, and creates and activates SVC_HANDLERs. Reimplemented from ACE_Event_Handler.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
virtual int ACE_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. Reimplemented in ACE_Strategy_Acceptor.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
virtual int ACE_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 >
virtual int ACE_Acceptor< SVC_HANDLER, >::make_svc_handler | ( | SVC_HANDLER *& | sh | ) | `[protected, virtual]`

| Bridge method for creating a SVC_HANDLER. The default is to create a new <SVC_HANDLER> if <sh> == 0, else <sh> is unchanged. However, subclasses can override this policy to perform SVC_HANDLER creation in any way that they like (such as creating subclass instances of SVC_HANDLER, using a singleton, dynamically linking the handler, etc.). Returns -1 on failure, else 0. Reimplemented in ACE_Strategy_Acceptor.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
virtual int ACE_Acceptor< SVC_HANDLER, >::open | ( | const ACE_PEER_ACCEPTOR_ADDR & | local_addr,
|  | ACE_Reactor * | reactor = ACE_Reactor::instance (),
|  | int | flags = 0,
|  | int | use_select = 1,
|  | int | reuse_addr = 1
| ) | `[virtual]`

  | Open the contained `PEER_ACCEPTOR` object to begin listening, and register with the specified reactor for accept events. The `PEER_ACCEPTOR` handle is put into non-blocking mode as a safeguard against the race condition that can otherwise occur between the time when the passive-mode socket handle is "ready" and when the actual `accept` call is made. During this interval, the client can shutdown the connection, in which case, the <accept> call can hang. Parameters:
  local_addr | The address to listen at.
  reactor | Pointer to the ACE_Reactor instance to register this object with. The default is the singleton.
  flags | Flags to control what mode an accepted socket will be put into after it is accepted. The only legal value for this argument is `ACE_NONBLOCK`, which enables non-blocking mode on the accepted peer stream object in `SVC_HANDLER`. The default is 0.
  use_select | Affects behavior when called back by the reactor when a connection can be accepted. If non-zero, this object will accept all pending connections, intead of just the one that triggered the reactor callback. Uses ACE_OS::select() internally to detect any remaining acceptable connections. The default is 1.
  reuse_addr | Passed to the `PEER_ACCEPTOR::open()` method with `local_addr`. Generally used to request that the OS allow reuse of the listen port. The default is 1.
  Return values:
  0 | Success
  -1 | Failure, `errno` contains an error code.
Reimplemented in ACE_Strategy_Acceptor.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
virtual ACE_Acceptor< SVC_HANDLER, >::operator ACE_PEER_ACCEPTOR & | ( |  | ) | const`[virtual]`

| Return the underlying PEER_ACCEPTOR object. Reimplemented in ACE_Strategy_Acceptor.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
virtual int ACE_Acceptor< SVC_HANDLER, >::resume | ( | void |  | ) | `[virtual]`

| This method calls <Reactor::resume>. Reimplemented from ACE_Service_Object. Reimplemented in ACE_Strategy_Acceptor.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
virtual int ACE_Acceptor< SVC_HANDLER, >::suspend | ( | void |  | ) | `[virtual]`

| This method calls <Reactor::suspend>. Reimplemented from ACE_Service_Object. Reimplemented in ACE_Strategy_Acceptor.

## Member Data Documentation

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
ACE_Acceptor::ACE_ALLOC_HOOK_DECLARE

| Declare the dynamic allocation hooks. Reimplemented in ACE_Strategy_Acceptor.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
int ACE_Acceptor::flags_`[protected]`

| Flags that indicate how <SVC_HANDLER>'s should be initialized prior to being activated. Right now, the only flag that is processed is <ACE_NONBLOCK>, which enabled non-blocking I/O on the <SVC_HANDLER> when it is opened.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
ACE_PEER_ACCEPTOR ACE_Acceptor::peer_acceptor_`[protected]`

| Concrete factory for accepting connections from clients...

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
ACE_PEER_ACCEPTOR_ADDR ACE_Acceptor::peer_acceptor_addr_`[protected]`

| Needed to reopen the socket if <accept> fails.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
int ACE_Acceptor::reuse_addr_`[protected]`

| Needed to reopen the socket if <accept> fails.

template<class SVC_HANDLER, ACE_PEER_ACCEPTOR_1 >
int ACE_Acceptor::use_select_`[protected]`

| Flag that indicates whether it shall use <select> in the <accept>-loop.

The documentation for this class was generated from the following file:

- Acceptor.h