---
name: "ACE_SOCK_Acceptor"
section: "3"
platform: "linux"
package: "libace-doc"
version: "5.0.7-4"
release: "Debian 2.2 (Potato)"
platforms: ["linux"]
url: "https://new.carta.tech/ACE_SOCK_Acceptor"
---

# ACE\_SOCK\_Acceptor(3)

Defines a factory that creates new ACE\_Streams passively.

## NAME

ACE\_SOCK\_Acceptor -  Defines a factory that creates new ACE\_Streams passively.

## SYNOPSIS

```
#include <ace/SOCK_Acceptor.h>
class ACE_SOCK_Acceptor : public ACE_SOCK
{
  public:
    ACE_SOCK_Acceptor (void);
    ACE_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_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
        );
    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 open (
        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_SOCK_Acceptor (void);
    int accept (
        ACE_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_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;
    typedef ACE_INET_Addr PEER_ADDR;
    typedef ACE_SOCK_Stream PEER_STREAM;
    void dump (void) const;
    ACE_ALLOC_HOOK_DECLARE;
  protected:
    int shared_accept_start (
        ACE_Time_Value *timeout,
        int restart,
        int &in_blocking_mode
        ) const;
    int shared_accept_finish (
        ACE_SOCK_Stream new_stream,
        int in_blocking_mode,
        int reset_new_handle
        ) const;
    int shared_open (
        const ACE_Addr &local_sap,
        int protocol_family,
        int backlog
        );
  private:
    int get_remote_addr (ACE_Addr &) const;
};
```

## DESCRIPTION

The ACE\_SOCK\_Acceptor has its own "passive-mode" socket. This serves as a factory to create so-called "data-mode" sockets, which are what the ACE\_SOCK\_Stream encapsulates. Therefore, by inheriting from ACE\_SOCK, ACE\_SOCK\_Acceptor gets its very own socket.

## Initialization and termination methods.

```
ACE_SOCK_Acceptor (void);
```

Default constructor.

```
ACE_SOCK_Acceptor (
    const ACE_Addr &local_sap,
    int reuse_addr = 0,
    int protocol_family = PF_INET,
    int backlog = ACE_DEFAULT_BACKLOG,
    int protocol = 0
    );
```

Initialize a passive-mode BSD-style acceptor socket (no QoS). local\_sap is the address that we're going to listen for connections on.  If reuse\_addr is 1 then we'll use the SO\_REUSEADDR to reuse this address.

```
ACE_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
    );
```

Initialize a passive-mode QoS-enabled acceptor socket.  Returns 0 on success and -1 on failure.

```
int open (
    const ACE_Addr &local_sap,
    int reuse_addr = 0,
    int protocol_family = PF_INET,
    int backlog = ACE_DEFAULT_BACKLOG,
    int protocol = 0
    );
```

Initialize a passive-mode BSD-style acceptor socket (no QoS). local\_sap is the address that we're going to listen for connections on.  If reuse\_addr is 1 then we'll use the SO\_REUSEADDR to reuse this address.  Returns 0 on success and -1 on failure.

```
int open (
    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
    );
```

Initialize a passive-mode QoS-enabled acceptor socket.  Returns 0 on success and -1 on failure.

```
~ACE_SOCK_Acceptor (void);
```

Default dtor.

\= Passive connection accept methods.

```
int accept (
    ACE_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\_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. Note that new\_stream inherits the "blocking mode" of this ACE\_SOCK\_Acceptor, i.e., if this acceptor factory is in non-blocking mode, the net\_stream will be in non-blocking mode and vice versa.

```
int accept (
    ACE_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\_SOCK\_Stream connection using the 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.  Note that new\_stream inherits the "blocking mode" of this ACE\_SOCK\_Acceptor, i.e., if this acceptor factory is in non-blocking mode, the net\_stream will be in non-blocking mode and vice versa.

## Meta-type info

```
typedef ACE_INET_Addr PEER_ADDR;
```

```
typedef ACE_SOCK_Stream PEER_STREAM;
```

```
void dump (void) const;
```

Dump the state of an object.

```
ACE_ALLOC_HOOK_DECLARE;
```

Declare the dynamic allocation hooks.

## AUTHOR

Doug Schmidt

## LIBRARY

ace
