ONPOSIX  2.0
Public Member Functions | List of all members
StreamSocketClientDescriptor Class Reference

Class for a connection-oriented client. More...

#include <StreamSocketClientDescriptor.hpp>

Inheritance diagram for StreamSocketClientDescriptor:
Inheritance graph

Public Member Functions

  StreamSocketClientDescriptor (const std::string &name)
  Constructor for local (i.e., AF_UNIX) sockets.
  StreamSocketClientDescriptor (const std::string &address, const uint16_t port)
  Constructor for TCP (i.e., AF_INET) sockets.
- Public Member Functions inherited from PosixDescriptor
virtual  ~PosixDescriptor ()
  Destructor.
void  async_read (void(*handler)(Buffer *b, size_t size), Buffer *b, size_t size)
  Run asynchronous read operation.
void  async_read (void(*handler)(void *b, size_t size), void *b, size_t size)
  Run asynchronous read operation.
void  async_write (void(*handler)(Buffer *b, size_t size), Buffer *b, size_t size)
  Run asynchronous write operation.
void  async_write (void(*handler)(void *b, size_t size), void *b, size_t size)
  Run asynchronous write operation.
int  read (Buffer *b, size_t size)
  Method to read from the descriptor and fill a buffer.
int  read (void *p, size_t size)
  Method to read from the descriptor.
int  write (Buffer *b, size_t size)
  Method to write data in a buffer to the descriptor.
int  write (const void *p, size_t size)
  Method to write to the descriptor.
int  write (const std::string &s)
  Method to write a string to the descriptor.
virtual void  close ()
  Method to close the descriptor.
int  getDescriptorNumber () const
  Method to get descriptor number.
  Copy constructor.
  Assignment operator.
bool  flush ()
  Method to flush this specific descriptor.
int  ioctl (int request)
  Ioctl on the file descriptor.
int  ioctl (int request, void *argp)
  Ioctl on the file descriptor.

Additional Inherited Members

- Protected Member Functions inherited from PosixDescriptor
int  do_read (void *p, size_t size)
  Low-level read.
int  do_write (const void *p, size_t size)
  Low-level write.
  Constructor.
- Protected Attributes inherited from PosixDescriptor
int  fd_
  Number of the file descriptor.

Detailed Description

Class for a connection-oriented client.

Definition at line 31 of file StreamSocketClientDescriptor.hpp.

Constructor & Destructor Documentation

inlinevirtual

Definition at line 33 of file StreamSocketClientDescriptor.hpp.

{}
StreamSocketClientDescriptor ( const std::string &  name )

Constructor for local (i.e., AF_UNIX) sockets.

It calls socket()+connect().

Parameters
name Name of the local socket on the filesystem
Exceptions
runtime_error in case of error in socket() or connect()

Definition at line 38 of file StreamSocketClientDescriptor.cpp.

{
// socket()
fd_ = socket(AF_UNIX, SOCK_STREAM, 0);
if (fd_ < 0) {
ERROR("Creating client socket");
throw std::runtime_error ("Client socket error");
}
// connect()
struct sockaddr_un serv_addr;
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sun_family = AF_UNIX;
strncpy(serv_addr.sun_path, name.c_str(), sizeof(serv_addr.sun_path) - 1);
if (connect(fd_, (struct sockaddr *) &serv_addr,
sizeof(serv_addr)) < 0) {
ERROR("connect()");
throw std::runtime_error ("Client socket error");
}
}

Here is the call graph for this function:

StreamSocketClientDescriptor ( const std::string &  address,
const uint16_t  port 
)

Constructor for TCP (i.e., AF_INET) sockets.

It calls socket()+connect().

Parameters
port Port of the socket
Exceptions
runtime_error in case of error in socket() or connect()

Definition at line 68 of file StreamSocketClientDescriptor.cpp.

{
// socket()
fd_ = socket(AF_INET, SOCK_STREAM, 0);
if (fd_ < 0) {
ERROR("Creating client socket");
throw std::runtime_error ("Client socket error");
}
// connect()
struct sockaddr_in serv_addr;
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(port);
struct in_addr addr;
inet_aton(address.c_str(), &addr);
bcopy(&addr, &serv_addr.sin_addr.s_addr, sizeof(addr));
if (connect(fd_, (struct sockaddr *) &serv_addr,
sizeof(serv_addr)) < 0) {
ERROR("connect()");
throw std::runtime_error ("Client socket error");
}
}

Here is the call graph for this function:


The documentation for this class was generated from the following files:

AltStyle によって変換されたページ (->オリジナル) /