Abstract factory for creating a service handler (SVC_HANDLER), accepting into the SVC_HANDLER, and activating the SVC_HANDLER.
More...
|
| ACE_Acceptor (ACE_Reactor *=0, int use_select=1) |
| "Do-nothing" constructor. More...
|
|
| ACE_Acceptor (const typename PEER_ACCEPTOR::PEER_ADDR &local_addr, ACE_Reactor *reactor=ACE_Reactor::instance(), int flags=0, int use_select=1, int reuse_addr=1) |
|
virtual int | open (const typename PEER_ACCEPTOR::PEER_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 PEER_ACCEPTOR & () const |
| Return the underlying PEER_ACCEPTOR object. More...
|
|
virtual 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...
|
|
virtual int | handle_accept_error (void) |
|
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...
|
|
| ACE_Service_Object (ACE_Reactor *=0) |
| Constructor. More...
|
|
virtual | ~ACE_Service_Object (void) |
| Destructor. More...
|
|
virtual | ~ACE_Event_Handler (void) |
| Destructor is virtual to enable proper cleanup. More...
|
|
virtual void | set_handle (ACE_HANDLE) |
| Set the I/O handle. More...
|
|
virtual int | priority (void) const |
|
virtual void | priority (int priority) |
| Set the priority of the Event_Handler. More...
|
|
virtual int | handle_output (ACE_HANDLE fd=ACE_INVALID_HANDLE) |
|
virtual int | handle_exception (ACE_HANDLE fd=ACE_INVALID_HANDLE) |
| Called when an exceptional events occur (e.g., SIGURG). More...
|
|
virtual int | handle_timeout (const ACE_Time_Value ¤t_time, const void *act=0) |
|
virtual int | handle_exit (ACE_Process *) |
| Called when a process exits. More...
|
|
virtual int | handle_signal (int signum, siginfo_t *=0, ucontext_t *=0) |
|
virtual int | resume_handler (void) |
|
virtual int | handle_qos (ACE_HANDLE=ACE_INVALID_HANDLE) |
|
virtual int | handle_group_qos (ACE_HANDLE=ACE_INVALID_HANDLE) |
|
virtual void | reactor (ACE_Reactor *reactor) |
| Set the event demultiplexors. More...
|
|
virtual ACE_Reactor * | reactor (void) const |
| Get the event demultiplexors. More...
|
|
virtual ACE_Reactor_Timer_Interface * | reactor_timer_interface (void) const |
| Get only the reactor's timer related interface. More...
|
|
virtual Reference_Count | add_reference (void) |
| Increment reference count on the handler. More...
|
|
virtual Reference_Count | remove_reference (void) |
| Decrement reference count on the handler. More...
|
|
Reference_Counting_Policy & | reference_counting_policy (void) |
| Current Reference_Counting_Policy. More...
|
|
| ACE_Shared_Object (void) |
| Constructor. More...
|
|
virtual | ~ACE_Shared_Object (void) |
| Destructor. More...
|
|
template<typename SVC_HANDLER, typename PEER_ACCEPTOR>
class ACE_Acceptor< SVC_HANDLER, PEER_ACCEPTOR >
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 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.
An ACE_Acceptor is parameterized by concrete types that conform to the interfaces of SVC_HANDLER and PEER_ACCEPTOR described below.
- Template Parameters
-
SVC_HANDLER | The name of the concrete type that performs the application-specific service. The SVC_HANDLER typically inherits from ACE_Svc_Handler. |
- See also
- Svc_Handler.h.
- Template Parameters
-
PEER_ACCEPTOR | The name of the class that implements the PEER_ACCEPTOR endpoint (e.g., ACE_SOCK_Acceptor) to passively establish connections. A PEER_ACCEPTOR implementation must provide a PEER_STREAM and PEER_ADDR trait to identify the type of stream (e.g., ACE_SOCK_Stream) and type of address (e.g., ACE_INET_Addr) used by the endpoint. |
template<typename SVC_HANDLER , typename PEER_ACCEPTOR >
Open the contained PEER_ACCEPTOR
object to begin listening, and register with the specified reactor for accept events. An acceptor can only listen to one port at a time, so make sure to close()
the acceptor before calling open()
again.
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, instead 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. |
template<typename SVC_HANDLER , typename PEER_ACCEPTOR >
int ACE_Acceptor< SVC_HANDLER, PEER_ACCEPTOR >::activate_svc_handler |
( |
SVC_HANDLER * |
svc_handler | ) |
|
|
protectedvirtual |
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< SVC_HANDLER, PEER_ACCEPTOR >.
template<typename SVC_HANDLER , typename PEER_ACCEPTOR >
int ACE_Acceptor< SVC_HANDLER, PEER_ACCEPTOR >::make_svc_handler |
( |
SVC_HANDLER *& |
sh | ) |
|
|
protectedvirtual |
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< SVC_HANDLER, PEER_ACCEPTOR >.
template<typename SVC_HANDLER , typename PEER_ACCEPTOR >
Open the contained PEER_ACCEPTOR
object to begin listening, and register with the specified reactor for accept events. An acceptor can only listen to one port at a time, so make sure to close()
the acceptor before calling open()
again.
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, instead 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< SVC_HANDLER, PEER_ACCEPTOR >.