#include <string>
#include <map>
+#include "connection.hxx"
+#include "types.hxx"
+
namespace libt2n
{
/**
Basic connection class
*/
-class connection
+class server_connection : public connection
{
private:
int timeout;
int last_action_time;
- bool closed;
unsigned int connection_id;
protected:
- connection(int _timeout)
+ server_connection(int _timeout)
+ : connection()
{
set_timeout(_timeout);
reset_timeout();
- closed=false;
connection_id=0;
my_server=0;
}
server *my_server;
- std::string buffer;
-
- typedef unsigned int packet_size_indicator;
public:
- ~connection()
- { this->close(); }
-
void check_timeout();
void reset_timeout();
void set_timeout(int _timeout)
{ timeout=_timeout; }
- bool is_closed()
- { return closed; }
-
void set_server(server* _my_server)
{ my_server=_my_server; }
{ connection_id=_connection_id; }
unsigned int get_id()
{ return connection_id; }
- std::string get_id_string();
-
- virtual void close()
- { closed=true; }
-
- bool get_packet(std::string& data, unsigned int& conn_id);
- virtual void write(const std::string& data)=0;
};
/**
*/
class server
{
- public:
- enum log_level_values { none=0, error=1, debug=2 };
-
private:
int default_timeout;
log_level_values log_level;
unsigned int next_id;
protected:
- std::map<unsigned int, connection*> connections;
+ std::map<unsigned int, server_connection*> connections;
server()
{
next_id=1;
}
- int add_connection(connection* newconn);
+ int add_connection(server_connection* newconn);
public:
virtual ~server();
logstream=_logstream;
}
- connection* get_connection(unsigned int conn_id);
+ server_connection* get_connection(unsigned int conn_id);
virtual void fill_buffer(long long usec_timeout=-1)=0;
- void check_timeout();
+ void cleanup();
+ bool get_packet(std::string& data)
+ { unsigned int x; return get_packet(data,x); }
bool get_packet(std::string& data, unsigned int& conn_id);
virtual void fill_connection_buffers(void)=0;