connection on a server More...
#include <server.hxx>
Public Member Functions | |
void | check_timeout () |
check if timeout is expired, close connection if so | |
void | reset_timeout () |
reset the timeout, e.g. if something is received | |
void | set_timeout (int _timeout) |
unsigned int | get_id () |
get the id of this connection within the server object | |
void | add_callback (callback_event_type event, const boost::function< void()> &func) |
add a callback to one connection | |
bool | is_closed () |
is this connection closed or not | |
virtual void | close () |
close this connection | |
virtual bool | fill_buffer (long long usec_timeout=-1, long long *usec_timeout_remaining=NULL)=0 |
look for new data and store it in the local buffer | |
bool | get_packet (std::string &data) |
read a complete data packet from the buffer. The packet is removed from the connection buffer. | |
unsigned int | peek_packet (std::string &data) |
get (maybe incomplete) data of the next packet from the buffer. Does not remove the data from the connection buffer. | |
bool | packet_available () |
returns true if a complete data packet is in the buffer. retrieve it with get_packet(). | |
void | write (const std::string &data) |
send a blob to the peer | |
std::list< boost::function < void()> > | get_callback_list (callback_event_type event) |
get the callbacks in place for one event | |
Protected Types | |
typedef uint32_t | packet_size_indicator |
Protected Member Functions | |
server_connection (int _timeout) | |
virtual | ~server_connection () |
std::ostream * | get_logstream (log_level_values level) |
get pointer to logging stream, returns NULL if no logging needed | |
packet_size_indicator | bytes_available () |
get the number of bytes being available as next complete packet | |
virtual void | real_write (const std::string &data)=0 |
void | do_callbacks (callback_event_type event) |
an event has occured, execute the callbacks that are registered for this event | |
void | reopen (void) |
reopen a already closed connection, removes incomplete packets from the buffer | |
void | remove_incomplete_packets () |
remove all data from buffer that is not a complete packet | |
Protected Attributes | |
server * | my_server |
std::string | buffer |
Private Member Functions | |
void | set_server (server *_my_server) |
void | set_id (unsigned int _connection_id) |
Private Attributes | |
int | timeout |
int | last_action_time |
unsigned int | connection_id |
Friends | |
class | server |
connection on a server
on a server every connection to a client is represented as server_connection. a server_connection is abstract, derived classes like socket_server_connection are used.
typedef uint32_t libt2n::connection::packet_size_indicator [protected, inherited] |
libt2n::server_connection::server_connection | ( | int | _timeout | ) | [protected] |
References reset_timeout(), and set_timeout().
libt2n::server_connection::~server_connection | ( | ) | [protected, virtual] |
Destructor
void libt2n::server_connection::add_callback | ( | callback_event_type | event, | |
const boost::function< void()> & | func | |||
) |
add a callback to one connection
event | event the function will be called at | |
func | functor (see boost::function) that will be called |
Reimplemented from libt2n::connection.
References libt2n::new_connection.
Referenced by libt2n::server::add_connection().
connection::packet_size_indicator libt2n::connection::bytes_available | ( | ) | [protected, inherited] |
get the number of bytes being available as next complete packet
References libt2n::connection::buffer.
Referenced by libt2n::connection::get_packet(), and libt2n::connection::packet_available().
void libt2n::server_connection::check_timeout | ( | ) |
check if timeout is expired, close connection if so
References libt2n::connection::close(), connection_id, libt2n::debug, last_action_time, LOGSTREAM, and timeout.
void libt2n::connection::close | ( | ) | [virtual, inherited] |
close this connection
Reimplemented in libt2n::socket_client_connection, and libt2n::socket_server_connection.
References libt2n::connection::closed, libt2n::connection_closed, libt2n::connection::do_callbacks(), and libt2n::connection::is_closed().
Referenced by check_timeout(), libt2n::command_client::command_client(), libt2n::dummy_client_connection::dummy_client_connection(), and libt2n::command_server::handle().
void libt2n::connection::do_callbacks | ( | callback_event_type | event | ) | [protected, inherited] |
an event has occured, execute the callbacks that are registered for this event
event | event type that has occured |
References libt2n::connection::callbacks.
Referenced by libt2n::connection::close(), libt2n::connection::reopen(), libt2n::socket_client_connection::socket_client_connection(), and libt2n::connection::~connection().
virtual bool libt2n::connection::fill_buffer | ( | long long | usec_timeout = -1 , |
|
long long * | usec_timeout_remaining = NULL | |||
) | [pure virtual, inherited] |
look for new data and store it in the local buffer
usec_timeout | wait until new data is found, max timeout usecs. -1: wait endless 0: return instantly | |
usec_timeout_remaining | if non-NULL the function will write the not used time to the given target |
true | if new data was found (does not mean that the received data is a complete packet though) |
Implemented in libt2n::socket_client_connection, libt2n::socket_server_connection, and libt2n::dummy_client_connection.
Referenced by libt2n::command_client::read_hello(), and libt2n::command_client::read_packet().
std::list< boost::function< void()> > libt2n::connection::get_callback_list | ( | callback_event_type | event | ) | [inherited] |
get the callbacks in place for one event
event | event the callbacks should be registered for |
References libt2n::connection::callbacks.
Referenced by libt2n::command_client::replace_connection().
unsigned int libt2n::server_connection::get_id | ( | ) | [inline] |
get the id of this connection within the server object
References connection_id.
Referenced by get_logstream(), and libt2n::command_server::handle_packet().
std::ostream * libt2n::server_connection::get_logstream | ( | log_level_values | level | ) | [protected, virtual] |
get pointer to logging stream, returns NULL if no logging needed
Implements libt2n::connection.
Reimplemented in libt2n::socket_server_connection.
References get_id(), libt2n::server::get_logstream(), and my_server.
bool libt2n::connection::get_packet | ( | std::string & | data | ) | [inherited] |
read a complete data packet from the buffer. The packet is removed from the connection buffer.
[out] | data | the data package |
true | if packet found |
References libt2n::connection::buffer, and libt2n::connection::bytes_available().
Referenced by libt2n::command_client::read_hello(), and libt2n::command_client::read_packet().
bool libt2n::connection::is_closed | ( | ) | [inline, inherited] |
is this connection closed or not
References libt2n::connection::closed.
Referenced by libt2n::socket_server_connection::close(), libt2n::socket_client_connection::close(), libt2n::connection::close(), libt2n::ReconnectIgnoreFailureSocketWrapper::get_connection(), libt2n::command_client::is_connection_closed(), libt2n::command_client::read_hello(), libt2n::command_client::read_packet(), libt2n::socket_client_connection::reconnect(), libt2n::connection::reopen(), libt2n::socket_client_connection::socket_client_connection(), and libt2n::connection::~connection().
bool libt2n::connection::packet_available | ( | ) | [inline, inherited] |
returns true if a complete data packet is in the buffer. retrieve it with get_packet().
References libt2n::connection::bytes_available().
unsigned int libt2n::connection::peek_packet | ( | std::string & | data | ) | [inherited] |
get (maybe incomplete) data of the next packet from the buffer. Does not remove the data from the connection buffer.
[out] | data | the data package |
full | size of the packet when it will be complete |
References libt2n::connection::buffer.
Referenced by libt2n::command_client::read_hello().
virtual void libt2n::connection::real_write | ( | const std::string & | data | ) | [protected, pure virtual, inherited] |
Implemented in libt2n::socket_client_connection, libt2n::socket_server_connection, and libt2n::dummy_client_connection.
Referenced by libt2n::connection::write().
void libt2n::connection::remove_incomplete_packets | ( | ) | [protected, inherited] |
remove all data from buffer that is not a complete packet
References libt2n::connection::buffer.
Referenced by libt2n::connection::reopen().
void libt2n::connection::reopen | ( | void | ) | [protected, inherited] |
reopen a already closed connection, removes incomplete packets from the buffer
References libt2n::connection::closed, libt2n::connection::do_callbacks(), libt2n::connection::is_closed(), libt2n::new_connection, and libt2n::connection::remove_incomplete_packets().
Referenced by libt2n::socket_client_connection::reconnect().
void libt2n::server_connection::reset_timeout | ( | ) |
reset the timeout, e.g. if something is received
References last_action_time.
Referenced by libt2n::socket_server_connection::fill_buffer(), and server_connection().
void libt2n::server_connection::set_id | ( | unsigned int | _connection_id | ) | [inline, private] |
References connection_id.
Referenced by libt2n::server::add_connection().
void libt2n::server_connection::set_server | ( | server * | _my_server | ) | [inline, private] |
References my_server.
Referenced by libt2n::server::add_connection().
void libt2n::server_connection::set_timeout | ( | int | _timeout | ) | [inline] |
References timeout.
Referenced by server_connection().
void libt2n::connection::write | ( | const std::string & | data | ) | [inherited] |
send a blob to the peer
References libt2n::connection::real_write().
Referenced by libt2n::command_server::handle_packet(), libt2n::command_client::send_command(), and libt2n::command_server::send_hello().
friend class server [friend] |
std::string libt2n::connection::buffer [protected, inherited] |
unsigned int libt2n::server_connection::connection_id [private] |
Referenced by check_timeout(), get_id(), and set_id().
int libt2n::server_connection::last_action_time [private] |
Referenced by check_timeout(), and reset_timeout().
server* libt2n::server_connection::my_server [protected] |
int libt2n::server_connection::timeout [private] |
Referenced by check_timeout(), and set_timeout().