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

ACE_SSL_SOCK_Acceptor Class Reference

Defines a factory that creates new ACE_SSL_SOCK_Stream>s passively. More...

#include <SSL_SOCK_Acceptor.h>

Inheritance diagram for ACE_SSL_SOCK_Acceptor

Inheritance graph
[legend]
Collaboration diagram for ACE_SSL_SOCK_Acceptor:

Collaboration graph
[legend]
List of all members.

Public Types

typedef ACE_INET_Addr PEER_ADDR
typedef ACE_SSL_SOCK_Stream PEER_STREAM

Public Methods

 ACE_SSL_SOCK_Acceptor (ACE_Reactor *reactor = ACE_Reactor::instance ())
 Default constructor.

 ~ACE_SSL_SOCK_Acceptor (void)
 Default dtor.

 ACE_SSL_SOCK_Acceptor (const ACE_Addr &local_sap, int reuse_addr = 0, int protocol_family = PF_INET, int backlog = ACE_DEFAULT_BACKLOG, int protocol = 0, ACE_Reactor *reactor = ACE_Reactor::instance () )
 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, int backlog = ACE_DEFAULT_BACKLOG, int protocol = 0, ACE_Reactor *reactor = ACE_Reactor::instance ())
 Initiate a passive-mode QoS-enabled acceptor socket.

int open (const ACE_Addr &local_sap, int reuse_addr = 0, int protocol_family = PF_INET, int backlog = ACE_DEFAULT_BACKLOG, int protocol = 0)
int close (void)
 Close the listening socket.

void reactor (ACE_Reactor *r)
 Set the Reactor used when completing the SSL passive connection.

ACE_Reactorreactor (void) const
 Return the Reactor used when completing the SSL passive connection.

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 Methods

int shared_accept_start (ACE_Time_Value *timeout, int restart, int &in_blocking_mode) const
 Perform operations that must occur before ACE_OS::accept() is called.

int shared_accept_finish (ACE_SSL_SOCK_Stream &new_stream, int in_blocking_mode, int reset_new_handle) const
 Perform operations that must occur after ACE_OS::accept() is called.

int ssl_accept (ACE_SSL_SOCK_Stream &new_stream) const
 Complete blocking SSL passive connection establishment.

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


Private Attributes

ACE_SOCK_Acceptor acceptor_
 The BSD-socket workhorse.

ACE_Reactorreactor_
 Pointer to the Reactor responsible for dispatching the event handler responsible for completing the SSL passive connection.


Detailed Description

Defines a factory that creates new ACE_SSL_SOCK_Stream>s passively.

The ACE_SSL_SOCK_Acceptor has its own ACE_SOCK_Acceptor which handles virtually all of the socket acceptance. This class is a wrapper which only adds the SSL acceptance.

Since SSL is record-oriented, some additional steps must be taken to make the ACE_SSL_SOCK_Acceptor interact properly with the Reactor (if one is used) when performing non-blocking accept() calls. In particular, the ACE_SSL_SOCK_Acceptor registers an event handler with the Reactor set in the constructor or in the ACE_SSL_SOCK_Acceptor::reactor() method. If no Reactor is explicitly set, the singleton Reactor instance will be used.

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

ASYS_INLINE ACE_SSL_SOCK_Acceptor::ACE_SSL_SOCK_Acceptor ( ACE_Reactor * reactor = ACE_Reactor::instance () )
 

Default constructor.

ACE_SSL_SOCK_Acceptor::~ACE_SSL_SOCK_Acceptor ( void )
 

Default dtor.

ASYS_INLINE ACE_SSL_SOCK_Acceptor::ACE_SSL_SOCK_Acceptor ( const ACE_Addr & local_sap,
int reuse_addr = 0,
int protocol_family = PF_INET,
int backlog = ACE_DEFAULT_BACKLOG,
int protocol = 0,
ACE_Reactor * reactor = ACE_Reactor::instance () )
 

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

Parameters:
local_sap   The address that we're going to listen for connections on.

ASYS_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,
int backlog = ACE_DEFAULT_BACKLOG,
int protocol = 0,
ACE_Reactor * reactor = ACE_Reactor::instance () )
 

Initiate a passive-mode QoS-enabled acceptor socket.


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. A timeout of 0 means block forever, a timeout of {0, 0} means poll. restart == 1 means "restart if interrupted," i.e., if errno == EINTR.

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. A timeout of 0 means block forever, a timeout of {0, 0} means poll. restart == 1 means "restart if interrupted," i.e., if errno == EINTR.

ASYS_INLINE int ACE_SSL_SOCK_Acceptor::close ( void )
 

Close the listening socket.

Reimplemented from ACE_SOCK.

ASYS_INLINE int ACE_SSL_SOCK_Acceptor::open ( const ACE_Addr & local_sap,
int reuse_addr = 0,
int protocol_family = PF_INET,
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.

ASYS_INLINE ACE_Reactor * ACE_SSL_SOCK_Acceptor::reactor ( void ) const
 

Return the Reactor used when completing the SSL passive connection.

ASYS_INLINE void ACE_SSL_SOCK_Acceptor::reactor ( ACE_Reactor * r )
 

Set the Reactor used when completing the SSL passive connection.

int ACE_SSL_SOCK_Acceptor::shared_accept_finish ( ACE_SSL_SOCK_Stream & new_stream,
int in_blocking_mode,
int reset_new_handle ) const [protected]
 

Perform operations that must occur after ACE_OS::accept() is called.

int ACE_SSL_SOCK_Acceptor::shared_accept_start ( ACE_Time_Value * timeout,
int restart,
int & in_blocking_mode ) const [protected]
 

Perform operations that must occur before ACE_OS::accept() is called.

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

Complete non-blocking SSL passive connection establishment.

int ACE_SSL_SOCK_Acceptor::ssl_accept ( ACE_SSL_SOCK_Stream & new_stream ) const [protected]
 

Complete blocking SSL passive connection establishment.


Member Data Documentation

ACE_SSL_SOCK_Acceptor::ACE_ALLOC_HOOK_DECLARE
 

Declare the dynamic allocation hooks.

ACE_SOCK_Acceptor ACE_SSL_SOCK_Acceptor::acceptor_ [private]
 

The BSD-socket workhorse.

ACE_Reactor * ACE_SSL_SOCK_Acceptor::reactor_ [private]
 

Pointer to the Reactor responsible for dispatching the event handler responsible for completing the SSL passive connection.


The documentation for this class was generated from the following files:
Generated at Wed Nov 21 10:47:03 2001 for ACE_SSL by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000