Intra2net AG

libt2n::server_connection Class Reference

connection on a server More...

#include <server.hxx>

Inheritance diagram for libt2n::server_connection:
Inheritance graph
[legend]

List of all members.

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

servermy_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

Detailed Description

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.


Member Typedef Documentation

typedef uint32_t libt2n::connection::packet_size_indicator [protected, inherited]

Constructor & Destructor Documentation

libt2n::server_connection::server_connection ( int  _timeout  )  [protected]

References reset_timeout(), and set_timeout().

libt2n::server_connection::~server_connection (  )  [protected, virtual]

Destructor


Member Function Documentation

void libt2n::server_connection::add_callback ( callback_event_type  event,
const boost::function< void()> &  func 
)

add a callback to one connection

Parameters:
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]
void libt2n::connection::do_callbacks ( callback_event_type  event  )  [protected, inherited]

an event has occured, execute the callbacks that are registered for this event

Parameters:
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

Parameters:
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
Return values:
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

Parameters:
event event the callbacks should be registered for
Returns:
std::list of functors (boost::function) with the callbacks
Note:
if you want to get the callbacks for all events, loop from 0 to __events_end

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.

Parameters:
[out] data the data package
Return values:
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]
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.

Parameters:
[out] data the data package
Return values:
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]
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

Note:
Only call when the connection is closed.
Justs cares about the data of connection, reconnecting has to be done in a derived class.

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]

Friends And Related Function Documentation

friend class server [friend]

Member Data Documentation

std::string libt2n::connection::buffer [protected, inherited]

Referenced by check_timeout(), get_id(), and set_id().

Referenced by check_timeout(), and reset_timeout().

Referenced by check_timeout(), and set_timeout().


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

Generated on 13 May 2015 by  doxygen 1.6.1
© Intra2net AG 2024 | Legal | Contact