Network::Socket Class Reference

This class represent an abstract socket connection (udp | tcp server | tcp client). More...

#include <socket.hh>

Inheritance diagram for Network::Socket:

Network::LocalSocket Network::NetSocket Network::TcpSocket Network::UdpSocket List of all members.

Public Member Functions

 Socket (SOCKET_KIND kind, SOCKET_VERSION version=V4)
 Socket (SOCKET_KIND kind, PROTO_KIND pkind, SOCKET_VERSION version=V4)
virtual ~Socket ()
void write (const std::string &str)
 function used by << operator (write a string on current socket)
bool connected () const
 return true when socket is connected
int get_socket ()
 get socket (fd) warning: be very carefull with this method
void add_delim (const std::string &delim)
 set the delimitor for the text mode
void del_delim (const std::string &delim)
 delete this delimitor for the socket
void allow_empty_lines ()
 , if set, empty lines will be returned in text procols (if not, they are skipped)
void init_tls (GnuTLSKind kind, unsigned size=1024, const std::string &certfile="", const std::string &keyfile="", const std::string &trustfile="", const std::string &crlfile="")
 
Exceptions:
TLSSupportError when TLS is not enabled

void enable_tls ()
 Enable TLS on socket.
virtual std::string read ()=0
 function used by >> operator (read a string on current socket)
virtual std::string read (int timeout)=0
 read a string with a timeout
virtual std::string readn (unsigned int size)=0
 read a string from socket
virtual std::string readn (int timeout, unsigned int size)=0
 read a string with a timeout

Protected Member Functions

void _close (int socket) const
 Close a connnection
Exceptions:
CloseException when close libc function return a negative value.

void _listen (int socket) const
 Listen on port
Exceptions:
ListenException when listen libc function return a negative value.

virtual std::string _read_line (int socket)=0
 Get a line from socket (when used with textual protocol)
Exceptions:
NoConnection when there is no open socket
ConnectionClosed when there is no more connection.

virtual std::string _read_line_bin (int socket, unsigned int size)=0
 Get a line from socket (when used with binary protocol)
Exceptions:
NoConnection when there is no open socket
ConnectionClosed when there is no more connection.

void _write_str (int socket, const std::string &str) const
 Write a string to a socket (when used with textual protocol)
Exceptions:
NoConnection when there is no open socket
ConnectionClosed when there is no more connection.

void _write_str_bin (int socket, const std::string &str) const
 Write a string to a socket (when used with binary protocol)
Exceptions:
NoConnection when there is no open socket
ConnectionClosed when there is no more connection.

void _set_timeout (bool enable, int socket, int timeout)
 set a timeout on a socket
std::pair< int, int > _find_delim (const std::string &str, int start) const
bool _update_buffer (std::pair< int, int > &delim, int &i, std::string &str)
 look delimiter and remove delimiter at begining of buffer if needed
bool _check_answer (int res, std::string &str)
 return the content of the buffer is there is

Protected Attributes

SOCKET_KIND _kind
SOCKET_VERSION _version
unsigned _state_timeout
int _socket
int _recv_flags
sockaddr_in _addr
PROTO_KIND _proto_kind
std::list< std::string > _delim
bool _empty_lines
std::string _buffer
bool _tls

Detailed Description

This class represent an abstract socket connection (udp | tcp server | tcp client).

Author:
Julien Lemoine <speedblue at="" happycoders="" dot="" org>="">

Definition at line 99 of file socket.hh.


Constructor & Destructor Documentation

Network::Socket::Socket ( SOCKET_KIND  kind,
SOCKET_VERSION  version = V4 
)

Definition at line 31 of file socket.cc.

References _delim, HERE, and Network::V6.

Network::Socket::Socket ( SOCKET_KIND  kind,
PROTO_KIND  pkind,
SOCKET_VERSION  version = V4 
)

Definition at line 48 of file socket.cc.

References _delim, HERE, and Network::V6.

Network::Socket::~Socket (  )  [virtual]

Definition at line 65 of file socket.cc.


Member Function Documentation

bool Network::Socket::_check_answer ( int  res,
std::string &  str 
) [inline, protected]

return the content of the buffer is there is

Definition at line 28 of file socket.hxx.

References _buffer, _state_timeout, and HERE.

Referenced by Network::NetSocket::_read_line().

void Network::Socket::_close ( int  socket  )  const [protected]

Close a connnection

Exceptions:
CloseException when close libc function return a negative value.

Definition at line 167 of file socket.cc.

References _tls, and HERE.

Referenced by Network::UdpSocket::close(), Network::TcpSocket::close(), and Network::LocalSocket::close().

std::pair< int, int > Network::Socket::_find_delim ( const std::string &  str,
int  start 
) const [protected]

Definition at line 338 of file socket.cc.

References _delim.

Referenced by _update_buffer().

void Network::Socket::_listen ( int  socket  )  const [protected]

Listen on port

Exceptions:
ListenException when listen libc function return a negative value.

Definition at line 192 of file socket.cc.

References HERE.

Referenced by Network::TcpSocket::connect().

virtual std::string Network::Socket::_read_line ( int  socket  )  [protected, pure virtual]

Get a line from socket (when used with textual protocol)

Exceptions:
NoConnection when there is no open socket
ConnectionClosed when there is no more connection.

Implemented in Network::LocalSocket, and Network::NetSocket.

virtual std::string Network::Socket::_read_line_bin ( int  socket,
unsigned int  size 
) [protected, pure virtual]

Get a line from socket (when used with binary protocol)

Exceptions:
NoConnection when there is no open socket
ConnectionClosed when there is no more connection.

Implemented in Network::LocalSocket, Network::NetSocket, Network::TcpSocket, and Network::UdpSocket.

void Network::Socket::_set_timeout ( bool  enable,
int  socket,
int  timeout 
) [protected]

set a timeout on a socket

Parameters:
timeout is in second
Exceptions:
Timeout when there is a timeout
SelectError when select libc function return a negative value

Definition at line 271 of file socket.cc.

References HERE.

Referenced by Network::NetSocket::_read_line(), Network::NetSocket::read(), Network::LocalSocket::read(), Network::NetSocket::readn(), and Network::LocalSocket::readn().

bool Network::Socket::_update_buffer ( std::pair< int, int > &  delim,
int &  i,
std::string &  str 
) [inline, protected]

look delimiter and remove delimiter at begining of buffer if needed

Definition at line 45 of file socket.hxx.

References _buffer, _empty_lines, and _find_delim().

Referenced by Network::NetSocket::_read_line(), and Network::LocalSocket::_read_line().

void Network::Socket::_write_str ( int  socket,
const std::string &  str 
) const [protected]

Write a string to a socket (when used with textual protocol)

Exceptions:
NoConnection when there is no open socket
ConnectionClosed when there is no more connection.

Definition at line 198 of file socket.cc.

References _addr, _tls, _version, HERE, SENDTO_FLAGS, and Network::V4.

Referenced by write().

void Network::Socket::_write_str_bin ( int  socket,
const std::string &  str 
) const [protected]

Write a string to a socket (when used with binary protocol)

Exceptions:
NoConnection when there is no open socket
ConnectionClosed when there is no more connection.

Definition at line 230 of file socket.cc.

References _addr, _tls, _version, HERE, SENDTO_FLAGS, and Network::V4.

Referenced by write().

void Network::Socket::add_delim ( const std::string &  delim  ) 

set the delimitor for the text mode

Definition at line 317 of file socket.cc.

References _delim.

void Network::Socket::allow_empty_lines (  ) 

, if set, empty lines will be returned in text procols (if not, they are skipped)

Definition at line 307 of file socket.cc.

References _empty_lines.

bool Network::Socket::connected (  )  const

return true when socket is connected

Definition at line 302 of file socket.cc.

References _socket.

Referenced by enable_tls().

void Network::Socket::del_delim ( const std::string &  delim  ) 

delete this delimitor for the socket

Definition at line 322 of file socket.cc.

References _delim.

void Network::Socket::enable_tls (  ) 

Enable TLS on socket.

Definition at line 69 of file socket.cc.

References _kind, _socket, connected(), HERE, and Network::TCP.

Referenced by Network::TcpSocket::accept().

int Network::Socket::get_socket (  ) 

get socket (fd) warning: be very carefull with this method

Definition at line 312 of file socket.cc.

References _socket.

void Network::Socket::init_tls ( GnuTLSKind  kind,
unsigned  size = 1024,
const std::string &  certfile = "",
const std::string &  keyfile = "",
const std::string &  trustfile = "",
const std::string &  crlfile = "" 
)

Exceptions:
TLSSupportError when TLS is not enabled

Definition at line 92 of file socket.cc.

References _tls, and HERE.

virtual std::string Network::Socket::read ( int  timeout  )  [pure virtual]

read a string with a timeout

Implemented in Network::LocalSocket, and Network::NetSocket.

virtual std::string Network::Socket::read (  )  [pure virtual]

function used by >> operator (read a string on current socket)

Implemented in Network::LocalSocket, and Network::NetSocket.

Referenced by Network::operator>>().

virtual std::string Network::Socket::readn ( int  timeout,
unsigned int  size 
) [pure virtual]

read a string with a timeout

Parameters:
size represente the number of byte to read

Implemented in Network::LocalSocket, and Network::NetSocket.

virtual std::string Network::Socket::readn ( unsigned int  size  )  [pure virtual]

read a string from socket

Parameters:
size represente the number of byte to read

Implemented in Network::LocalSocket, and Network::NetSocket.

void Network::Socket::write ( const std::string &  str  ) 

function used by << operator (write a string on current socket)

Definition at line 294 of file socket.cc.

References _proto_kind, _socket, _write_str(), _write_str_bin(), and Network::binary.

Referenced by Network::operator<<().


Member Data Documentation

struct sockaddr_in Network::Socket::_addr [protected]

Definition at line 194 of file socket.hh.

Referenced by Network::NetSocket::_bind(), _write_str(), Network::NetSocket::_write_str(), _write_str_bin(), and Network::NetSocket::_write_str_bin().

std::string Network::Socket::_buffer [protected]

Definition at line 201 of file socket.hh.

Referenced by _check_answer(), Network::NetSocket::_read_line(), Network::LocalSocket::_read_line(), Network::UdpSocket::_read_line_bin(), Network::TcpSocket::_read_line_bin(), Network::LocalSocket::_read_line_bin(), _update_buffer(), Network::NetSocket::readn(), and Network::LocalSocket::readn().

std::list<std::string> Network::Socket::_delim [protected]

Definition at line 199 of file socket.hh.

Referenced by _find_delim(), add_delim(), del_delim(), and Socket().

bool Network::Socket::_empty_lines [protected]

Definition at line 200 of file socket.hh.

Referenced by _update_buffer(), and allow_empty_lines().

SOCKET_KIND Network::Socket::_kind [protected]

Definition at line 189 of file socket.hh.

Referenced by Network::NetSocket::_bind(), Network::NetSocket::_read_line(), and enable_tls().

PROTO_KIND Network::Socket::_proto_kind [protected]

Definition at line 198 of file socket.hh.

Referenced by Network::TcpSocket::accept(), Network::NetSocket::read(), Network::LocalSocket::read(), write(), Network::NetSocket::writeto(), and Network::LocalSocket::writeto().

int Network::Socket::_recv_flags [protected]

Definition at line 193 of file socket.hh.

int Network::Socket::_socket [protected]

Definition at line 192 of file socket.hh.

Referenced by Network::NetSocket::_read_line(), Network::TcpSocket::accept(), Network::UdpSocket::close(), Network::TcpSocket::close(), Network::LocalSocket::close(), Network::UdpSocket::connect(), Network::TcpSocket::connect(), connected(), enable_tls(), Network::TcpSocket::get_ip(), get_socket(), Network::LocalSocket::init(), Network::NetSocket::read(), Network::LocalSocket::read(), Network::NetSocket::readn(), Network::LocalSocket::readn(), Network::TcpSocket::TcpSocket(), write(), Network::NetSocket::writeto(), and Network::LocalSocket::writeto().

unsigned Network::Socket::_state_timeout [protected]

Definition at line 191 of file socket.hh.

Referenced by _check_answer(), Network::NetSocket::_read_line(), Network::LocalSocket::_read_line(), Network::NetSocket::read(), and Network::LocalSocket::read().

bool Network::Socket::_tls [protected]

Definition at line 202 of file socket.hh.

Referenced by _close(), Network::NetSocket::_read_line(), Network::TcpSocket::_read_line_bin(), _write_str(), Network::NetSocket::_write_str(), _write_str_bin(), Network::NetSocket::_write_str_bin(), Network::TcpSocket::accept(), and init_tls().

SOCKET_VERSION Network::Socket::_version [protected]

Definition at line 190 of file socket.hh.

Referenced by Network::NetSocket::_accept(), Network::NetSocket::_bind(), Network::NetSocket::_connect(), Network::NetSocket::_read_line(), Network::UdpSocket::_read_line_bin(), Network::TcpSocket::_read_line_bin(), _write_str(), Network::NetSocket::_write_str(), _write_str_bin(), Network::NetSocket::_write_str_bin(), and Network::TcpSocket::accept().


The documentation for this class was generated from the following files:
Generated on Thu Dec 28 19:14:03 2006 for libsocket by  doxygen 1.4.7