{
server_connection::server_connection(int _timeout)
- : connection()
+ : connection_id(0)
+ , my_server(NULL)
+ , connection()
{
set_timeout(_timeout);
reset_timeout();
- connection_id=0;
- my_server=0;
+}
+
+/**
+ * Destructor
+ */
+server_connection::~server_connection()
+{
}
/// get pointer to logging stream, returns NULL if no logging needed
last_action_time=time(NULL);
}
+/** @brief add a callback to one connection
+
+ @param event event the function will be called at
+ @param func functor (see boost::function) that will be called
+*/
void server_connection::add_callback(callback_event_type event, const boost::function<void ()>& func)
{
if (event == new_connection)
std::map<unsigned int, server_connection*>::iterator ie=connections.end();
for(std::map<unsigned int, server_connection*>::iterator i=connections.begin(); i != ie; i++)
delete i->second;
+
+ connections.clear();
+}
+
+/**
+ * Close all open connections
+ */
+void server::close()
+{
+ std::map<unsigned int, server_connection*>::iterator ie=connections.end();
+ for(std::map<unsigned int, server_connection*>::iterator i=connections.begin(); i != ie; ++i)
+ i->second->close();
}
/** @brief add a callback
@param event event the function will be called at
- @param func functor (see boost function) that will be called
+ @param func functor (see boost::function) that will be called
@note use boost::bind to bind to member functions like this:
- s.add_callback(new_connection,bind(&my_class::func_to_call_back, boost::ref(*this), _1));
+ s.add_callback(new_connection,boost::bind(&my_class::func_to_call_back, boost::ref(*this), _1));
*/
void server::add_callback(callback_event_type event, const boost::function<void (unsigned int)>& func)
{
{
std::map<unsigned int, server_connection*>::iterator ie=connections.end();
for(std::map<unsigned int, server_connection*>::iterator i=connections.begin(); i != ie; i++)
- i->second->add_callback(event,bind(func, i->first));
+ i->second->add_callback(event,boost::bind(func, i->first));
}
}
+
+/** @brief an event occured, call all server-side callbacks
+
+ @param event event that occured
+ @param conn_id connection-id parameter that will be given to the callback-function
+*/
void server::do_callbacks(callback_event_type event, unsigned int conn_id)
{
std::list<boost::function<void (unsigned int)> >::iterator i,ie=callbacks[event].end();
(*i)(conn_id);
}
-int server::add_connection(server_connection* newconn)
+/// add a new connection to the server
+unsigned int server::add_connection(server_connection* newconn)
{
unsigned int cid=next_id++;
newconn->set_id(cid);