X-Git-Url: http://developer.intra2net.com/git/?p=libt2n;a=blobdiff_plain;f=src%2Fserver.hxx;h=7e496d92378fa049a03605bb5094ed6e739f7bd4;hp=8d2db8e7f7c496768937c7a1454e1de14b123174;hb=644c4d262aab14ee4ec1cfade83a2e99568098d3;hpb=59adb9e24e4ac66b2623742c3b9c81a1c20ff9f0 diff --git a/src/server.hxx b/src/server.hxx index 8d2db8e..7e496d9 100644 --- a/src/server.hxx +++ b/src/server.hxx @@ -23,47 +23,49 @@ #include #include +#include "connection.hxx" +#include "types.hxx" + namespace libt2n { +class server; + /** Basic connection class */ -class connection +class server_connection : public connection { private: int timeout; int last_action_time; - bool closed; - std::string buffer; + 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; } - public: - ~connection() - { this->close(); } + server *my_server; + public: 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; } - virtual void close() - { closed=true; } - - virtual void fill_buffer(void)=0; - - bool get_packet(std::string& data, unsigned int& conn_id); - virtual void write(const std::string& data)=0; + void set_id(unsigned int _connection_id) + { connection_id=_connection_id; } + unsigned int get_id() + { return connection_id; } }; /** @@ -71,30 +73,32 @@ class connection */ class server { - public: - enum log_level_values { none=0, error=1, debug=2 }; - private: int default_timeout; log_level_values log_level; std::ostream *logstream; unsigned int next_id; - std::map connections; protected: + std::map connections; + server() { set_default_timeout(30); set_logging(NULL,none); - next_id=0; + next_id=1; } + int add_connection(server_connection* newconn); + public: virtual ~server(); void set_default_timeout(int _default_timeout) { default_timeout=_default_timeout; } + int get_default_timeout(void) + { return default_timeout; } void set_logging(std::ostream *_logstream, log_level_values _log_level) { @@ -102,16 +106,17 @@ class 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); - void fill_connection_buffers(void); + virtual void fill_connection_buffers(void)=0; - protected: void log(log_level_values level, const std::string& message) { log(level,message.c_str()); } void log(log_level_values level, const char* message);