ACE_Stream
s passively.
#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;
};
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.
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
);
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
);
int open (
const ACE_Addr &local_sap,
int reuse_addr = 0,
int protocol_family = PF_INET,
int backlog = ACE_DEFAULT_BACKLOG,
int protocol = 0
);
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
);
~ACE_SOCK_Acceptor (void);
= 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;
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;
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.
typedef ACE_INET_Addr PEER_ADDR;
typedef ACE_SOCK_Stream PEER_STREAM;
void dump (void) const;
ACE_ALLOC_HOOK_DECLARE;