#include <socket.hh>
Inheritance diagram for Network::Socket:

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="") | ||||||
| |||||||
| 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
| |||||||
| void | _listen (int socket) const | ||||||
Listen on port
| |||||||
| virtual std::string | _read_line (int socket)=0 | ||||||
Get a line from socket (when used with textual protocol)
| |||||||
| virtual std::string | _read_line_bin (int socket, unsigned int size)=0 | ||||||
Get a line from socket (when used with binary protocol)
| |||||||
| void | _write_str (int socket, const std::string &str) const | ||||||
Write a string to a socket (when used with textual protocol)
| |||||||
| void | _write_str_bin (int socket, const std::string &str) const | ||||||
Write a string to a socket (when used with binary protocol)
| |||||||
| 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 | ||||||
Definition at line 99 of file socket.hh.
| Network::Socket::Socket | ( | SOCKET_KIND | kind, | |
| SOCKET_VERSION | version = V4 | |||
| ) |
| Network::Socket::Socket | ( | SOCKET_KIND | kind, | |
| PROTO_KIND | pkind, | |||
| SOCKET_VERSION | version = V4 | |||
| ) |
| 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
| CloseException | when close libc function return a negative value. |
Definition at line 167 of file socket.cc.
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] |
| void Network::Socket::_listen | ( | int | socket | ) | const [protected] |
Listen on port
| 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)
| 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)
| 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
| timeout | is in second |
| 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)
| 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)
| 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 | ) |
| 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 | ) |
| 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 | ( | ) |
| 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 = "" | |||
| ) |
| virtual std::string Network::Socket::read | ( | int | timeout | ) | [pure virtual] |
| 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
| 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
| 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<<().
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] |
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] |
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().
1.4.7