00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef CONEXUSSERVER_H
00020 #define CONEXUSSERVER_H
00021
00022 #include <set>
00023 #include <queue>
00024
00025 #include <sys/select.h>
00026
00027 #include <sigc++/sigc++.h>
00028
00029 #include <glibmm/dispatcher.h>
00030 #include <glibmm/thread.h>
00031
00032 #include <conexus/data.h>
00033
00034 namespace Conexus
00035 {
00036
00041 class Server
00042 {
00043 protected:
00044
00045 Server();
00046
00047 public:
00048
00049 typedef ConexusPointer<Server> pointer;
00050
00051 virtual ~Server();
00052
00053 virtual void start();
00054 virtual void start( bool use_dispatcher );
00055 virtual void stop();
00056
00068 virtual void set_responsiveness( long r );
00069
00073 virtual long responsiveness();
00074
00075 virtual bool is_running();
00076
00077 protected:
00078 Glib::Thread* m_thread;
00079 bool m_terminate;
00080 bool m_running;
00081 Glib::Dispatcher* m_dispatcher;
00082 bool m_use_dispatcher;
00083 struct timeval m_timeval;
00084
00085 virtual void service_thread_main() = 0;
00086
00087 private:
00088 void service_thread_main_proxy();
00089
00090 };
00091
00092 }
00093
00094 #endif