# ACE_SSL_SOCK_Acceptor Class Reference

Defines a factory that creates new `ACE_SSL_SOCK_Stream` objects passively. More...

`#include <SSL_SOCK_Acceptor.h>`

Inheritance diagram for ACE_SSL_SOCK_Acceptor:

[legend]
Collaboration diagram for ACE_SSL_SOCK_Acceptor:

[legend]
List of all members.

## Public Types

typedef ACE_INET_Addr | PEER_ADDR
typedef ACE_SSL_SOCK_Stream | PEER_STREAM

## Public Member Functions

| ACE_SSL_SOCK_Acceptor (void)
| Default constructor.
| ~ACE_SSL_SOCK_Acceptor (void)
| Default destructor.
| ACE_SSL_SOCK_Acceptor (const ACE_Addr &local_sap, int reuse_addr=0, int protocol_family=PF_UNSPEC, int backlog=ACE_DEFAULT_BACKLOG, int protocol=0)
| ACE_SSL_SOCK_Acceptor (const ACE_Addr &local_sap, ACE_Protocol_Info *protocolinfo, ACE_SOCK_GROUP g, u_long flags, int reuse_addr, int protocol_family=PF_UNSPEC, int backlog=ACE_DEFAULT_BACKLOG, int protocol=0)
int | open (const ACE_Addr &local_sap, int reuse_addr=0, int protocol_family=PF_UNSPEC, int backlog=ACE_DEFAULT_BACKLOG, int protocol=0)
int | close (void)
| Close the listening socket.
Passive Connection "accept" Methods
These are the canonical methods exposed by the Acceptor pattern.
int | accept (ACE_SSL_SOCK_Stream &new_stream, ACE_Addr *remote_addr=0, ACE_Time_Value *timeout=0, int restart=1, int reset_new_handle=0) const
int | accept (ACE_SSL_SOCK_Stream &new_stream, ACE_Accept_QoS_Params qos_params, ACE_Addr *remote_addr=0, ACE_Time_Value *timeout=0, int restart=1, int reset_new_handle=0) const

## Public Attributes

| ACE_ALLOC_HOOK_DECLARE
| Declare the dynamic allocation hooks.

## Protected Member Functions

int | ssl_accept (ACE_SSL_SOCK_Stream &new_stream, ACE_Time_Value *timeout) const
| Complete SSL passive connection establishment.

## Private Attributes

ACE_SOCK_Acceptor | acceptor_
| The BSD-socket workhorse.

## Detailed Description

Defines a factory that creates new `ACE_SSL_SOCK_Stream` objects passively.

The ACE_SSL_SOCK_Acceptor has its own `ACE_SOCK_Acceptor` which handles the basic socket acceptance. This class is a wrapper which adds the SSL acceptance handshake handling. Since SSL is record oriented, some additional steps must be taken after the basic socket acceptance to complete the SSL handshake that takes place at session establishment.

Note:
  The user must currently ensure that only one thread services a given SSL session at any given time since some underlying SSL implementations, such as OpenSSL, are not entirely thread-safe or reentrant.

## Member Typedef Documentation

typedef ACE_INET_Addr ACE_SSL_SOCK_Acceptor::PEER_ADDR

typedef ACE_SSL_SOCK_Stream ACE_SSL_SOCK_Acceptor::PEER_STREAM

## Constructor & Destructor Documentation

ACE_BEGIN_VERSIONED_NAMESPACE_DECL ACE_INLINE ACE_SSL_SOCK_Acceptor::ACE_SSL_SOCK_Acceptor | ( | void |  | ) |

| Default constructor.

ACE_SSL_SOCK_Acceptor::~ACE_SSL_SOCK_Acceptor | ( | void |  | ) |

| Default destructor.

ACE_INLINE ACE_SSL_SOCK_Acceptor::ACE_SSL_SOCK_Acceptor | ( | const ACE_Addr & | local_sap,
|  | int | reuse_addr = `0`,
|  | int | protocol_family = `PF_UNSPEC`,
|  | int | backlog = `ACE_DEFAULT_BACKLOG`,
|  | int | protocol = `0`
| ) |

Initiate a passive mode SSL/BSD-style acceptor socket.

Parameters:

  | local_sap | The address that we're going to listen for connections on. If this is `ACE_Addr::sap_any`, this socket listens on an the "any" IP address and selects an unused port. To find out what port was selected, call this object's `ACE_SOCK::get_local_addr(ACE_Addr&)` method upon return.

ACE_INLINE ACE_SSL_SOCK_Acceptor::ACE_SSL_SOCK_Acceptor | ( | const ACE_Addr & | local_sap,
|  | ACE_Protocol_Info * | protocolinfo,
|  | ACE_SOCK_GROUP | g,
|  | u_long | flags,
|  | int | reuse_addr,
|  | int | protocol_family = `PF_UNSPEC`,
|  | int | backlog = `ACE_DEFAULT_BACKLOG`,
|  | int | protocol = `0`
| ) |

Initiate a passive-mode QoS-enabled acceptor socket.

Parameters:

  | local_sap | The address that we're going to listen for connections on. If this is `ACE_Addr::sap_any`, this socket listens on an the "any" IP address and selects an unused port. To find out what port was selected, call this object's `ACE_SOCK::get_local_addr(ACE_Addr&)` method upon return.

## Member Function Documentation

int ACE_SSL_SOCK_Acceptor::accept | ( | ACE_SSL_SOCK_Stream & | new_stream,
|  | ACE_Accept_QoS_Params | qos_params,
|  | ACE_Addr * | remote_addr = `0`,
|  | ACE_Time_Value * | timeout = `0`,
|  | int | restart = `1`,
|  | int | reset_new_handle = `0`
| ) | const

Accept a new ACE_SSL_SOCK_Stream connection using the RVSP QoS information in qos_params.

Parameters:

  | new_stream | The `ACE_SSL_SOCK_Stream` object that will receive the new SSL socket.
  | remote_addr | Pointer to an `ACE_INET_Addr` object that will receive the address of the peer that connected.
  | timeout | The maximum time to wait for the combined socket acceptance and handshake completion. 0 means block forever, a timeout of {0, 0} means poll.
  | restart | 1 means "restart if interrupted," that is, if errno == EINTR.

Returns:
  0 if success; -1 for failure (errno contains error code).

int ACE_SSL_SOCK_Acceptor::accept | ( | ACE_SSL_SOCK_Stream & | new_stream,
|  | ACE_Addr * | remote_addr = `0`,
|  | ACE_Time_Value * | timeout = `0`,
|  | int | restart = `1`,
|  | int | reset_new_handle = `0`
| ) | const

Accept a new ACE_SSL_SOCK_Stream connection. On successful return, the socket has been accepted and the SSL handshake has been completed.

Parameters:

  | new_stream | The `ACE_SSL_SOCK_Stream` object that will receive the new SSL socket.
  | remote_addr | Pointer to an `ACE_INET_Addr` object that will receive the address of the peer that connected.
  | timeout | The maximum time to wait for the combined socket acceptance and handshake completion. 0 means block forever, a timeout of {0, 0} means poll.
  | restart | 1 means "restart if interrupted," that is, if errno == EINTR.

Returns:
  0 if success; -1 for failure (errno contains error code).

ACE_INLINE int ACE_SSL_SOCK_Acceptor::close | ( | void |  | ) |

| Close the listening socket. Reimplemented from ACE_SOCK.

ACE_INLINE int ACE_SSL_SOCK_Acceptor::open | ( | const ACE_Addr & | local_sap,
|  | int | reuse_addr = `0`,
|  | int | protocol_family = `PF_UNSPEC`,
|  | int | backlog = `ACE_DEFAULT_BACKLOG`,
|  | int | protocol = `0`
| ) |

Initiate a passive mode SSL/BSD-style acceptor socket.

Parameters:

  | local_sap | The address that we're going to listen for connections on. If this is `ACE_Addr::sap_any`, this socket listens on an the "any" IP address and selects an unused port. To find out what port was selected, call this object's `ACE_SOCK::get_local_addr(ACE_Addr&)` method upon return.

Returns:
  0 if success; -1 for failure (errno contains error code).

int ACE_SSL_SOCK_Acceptor::ssl_accept | ( | ACE_SSL_SOCK_Stream & | new_stream,
|  | ACE_Time_Value * | timeout
| ) | const`[protected]`

| Complete SSL passive connection establishment.

## Member Data Documentation

ACE_SOCK_Acceptor ACE_SSL_SOCK_Acceptor::acceptor_`[private]`

| The BSD-socket workhorse.

ACE_SSL_SOCK_Acceptor::ACE_ALLOC_HOOK_DECLARE

| Declare the dynamic allocation hooks. Reimplemented from ACE_SOCK.

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

- SSL_SOCK_Acceptor.h
- SSL_SOCK_Acceptor.cpp
- SSL_SOCK_Acceptor.i