Public Types | Public Member Functions | Public Attributes | Private Attributes

ACE_LSOCK_Acceptor Class Reference

Defines the format and interface for the acceptor side of the local ACE_SOCK ACE_Stream. More...

#include <LSOCK_Acceptor.h>

Inheritance diagram for ACE_LSOCK_Acceptor:
Inheritance graph
[legend]
Collaboration diagram for ACE_LSOCK_Acceptor:
Collaboration graph
[legend]

List of all members.

Public Types

typedef ACE_UNIX_Addr PEER_ADDR
typedef ACE_LSOCK_Stream PEER_STREAM

Public Member Functions

 ACE_LSOCK_Acceptor (void)
 Default constructor.
 ACE_LSOCK_Acceptor (const ACE_Addr &local_sap, int reuse_addr=0, int protocol_family=PF_UNIX, int backlog=ACE_DEFAULT_BACKLOG, int protocol=0)
 Initiate a passive mode socket.
int open (const ACE_Addr &local_sap, int reuse_addr=0, int protocol_family=PF_UNIX, int backlog=ACE_DEFAULT_BACKLOG, int protocol=0)
 Initiate a passive mode socket.
int accept (ACE_LSOCK_Stream &new_ipc_sap, ACE_Addr *=0, ACE_Time_Value *timeout=0, bool restart=true, bool reset_new_handle=false) const
 Accept a new data transfer connection.
int remove (void)
int get_local_addr (ACE_Addr &) const
 Return the local endpoint address.
void dump (void) const
 Dump the state of an object.

Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks.

Private Attributes

ACE_UNIX_Addr local_addr_
 Address of our rendezvous point.

Detailed Description

Defines the format and interface for the acceptor side of the local ACE_SOCK ACE_Stream.

Definition at line 41 of file LSOCK_Acceptor.h.


Member Typedef Documentation

Reimplemented from ACE_SOCK_Acceptor.

Definition at line 77 of file LSOCK_Acceptor.h.

Reimplemented from ACE_SOCK_Acceptor.

Definition at line 78 of file LSOCK_Acceptor.h.


Constructor & Destructor Documentation

ACE_LSOCK_Acceptor::ACE_LSOCK_Acceptor ( void   ) 

Default constructor.

Definition at line 45 of file LSOCK_Acceptor.cpp.

{
  ACE_TRACE ("ACE_LSOCK_Acceptor::ACE_LSOCK_Acceptor");
}

ACE_LSOCK_Acceptor::ACE_LSOCK_Acceptor ( const ACE_Addr local_sap,
int  reuse_addr = 0,
int  protocol_family = PF_UNIX,
int  backlog = ACE_DEFAULT_BACKLOG,
int  protocol = 0 
)

Initiate a passive mode socket.

Definition at line 65 of file LSOCK_Acceptor.cpp.

{
  ACE_TRACE ("ACE_LSOCK_Acceptor::ACE_LSOCK_Acceptor");
  if (this->open (remote_sap,
                  reuse_addr,
                  protocol_family,
                  backlog,
                  protocol) == -1)
    ACE_ERROR ((LM_ERROR,
                "ACE_LSOCK_Acceptor::ACE_LSOCK_Acceptor"));
}


Member Function Documentation

int ACE_LSOCK_Acceptor::accept ( ACE_LSOCK_Stream new_ipc_sap,
ACE_Addr remote_addr = 0,
ACE_Time_Value timeout = 0,
bool  restart = true,
bool  reset_new_handle = false 
) const

Accept a new data transfer connection.

Definition at line 84 of file LSOCK_Acceptor.cpp.

{
  ACE_TRACE ("ACE_LSOCK_Acceptor::accept");

  int in_blocking_mode = 0;
  if (this->shared_accept_start (timeout,
                                 restart,
                                 in_blocking_mode) == -1)
    return -1;
  else
    {
      sockaddr *addr = 0;
      int len = 0;

      if (remote_addr != 0)
        {
          len = remote_addr->get_size ();
          addr = (sockaddr *) remote_addr->get_addr ();
        }

      do
        new_stream.set_handle (ACE_OS::accept (this->get_handle (),
                                               addr,
                                               &len));
      while (new_stream.get_handle () == ACE_INVALID_HANDLE
             && restart != 0
             && errno == EINTR
             && timeout == 0);

      // Reset the size of the addr, which is only necessary for UNIX
      // domain sockets.
      if (new_stream.get_handle () != ACE_INVALID_HANDLE
          && remote_addr != 0)
        remote_addr->set_size (len);
    }

  return this->shared_accept_finish (new_stream,
                                     in_blocking_mode,
                                     reset_new_handle);
}

void ACE_LSOCK_Acceptor::dump ( void   )  const

Dump the state of an object.

Reimplemented from ACE_SOCK_Acceptor.

Definition at line 32 of file LSOCK_Acceptor.cpp.

{
#if defined (ACE_HAS_DUMP)
  ACE_TRACE ("ACE_LSOCK_Acceptor::dump");

  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
  this->local_addr_.dump ();
  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
#endif /* ACE_HAS_DUMP */
}

int ACE_LSOCK_Acceptor::get_local_addr ( ACE_Addr a  )  const

Return the local endpoint address.

Reimplemented from ACE_SOCK.

Definition at line 20 of file LSOCK_Acceptor.cpp.

{
  ACE_TRACE ("ACE_LSOCK_Acceptor::get_local_addr");

  ACE_UNIX_Addr& target = dynamic_cast<ACE_UNIX_Addr &> (a);

  target = this->local_addr_;

  return 0;
}

int ACE_LSOCK_Acceptor::open ( const ACE_Addr local_sap,
int  reuse_addr = 0,
int  protocol_family = PF_UNIX,
int  backlog = ACE_DEFAULT_BACKLOG,
int  protocol = 0 
)

Initiate a passive mode socket.

Reimplemented from ACE_SOCK_Acceptor.

Definition at line 51 of file LSOCK_Acceptor.cpp.

{
  ACE_TRACE ("ACE_LSOCK_Acceptor::open");
  this->local_addr_ = *((ACE_UNIX_Addr *) &remote_sap); // This is a gross hack...
  return ACE_SOCK_Acceptor::open (remote_sap, reuse_addr,
                                  protocol_family, backlog, protocol);
}

int ACE_LSOCK_Acceptor::remove ( void   ) 

Close down the ACE_LSOCK and remove the rendezvous point from the file system.

Definition at line 133 of file LSOCK_Acceptor.cpp.

{
  ACE_TRACE ("ACE_LSOCK_Acceptor::remove");
  int result = this->close ();
  return ACE_OS::unlink (this->local_addr_.get_path_name ()) == -1
    || result == -1 ? -1 : 0;
}


Member Data Documentation

Declare the dynamic allocation hooks.

Reimplemented from ACE_SOCK_Acceptor.

Definition at line 84 of file LSOCK_Acceptor.h.

Address of our rendezvous point.

Definition at line 88 of file LSOCK_Acceptor.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines