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/object.h>
00033 #include <conexus/data.h>
00034
00035 namespace Conexus
00036 {
00037
00042 class Server: public Object
00043 {
00044 public:
00045 Server();
00046 virtual ~Server();
00047
00048 virtual void start();
00049 virtual void start(bool use_dispatcher);
00050 virtual void stop();
00051
00063 virtual void set_responsiveness(long r);
00064
00068 virtual long responsiveness();
00069
00070 virtual bool is_running();
00071
00072 virtual const std::string& object_type() { static std::string s("Conexus::Server"); return s; }
00073
00074 protected:
00075 Glib::Thread* m_thread;
00076 bool m_terminate;
00077 bool m_running;
00078 Glib::Dispatcher* m_dispatcher;
00079 bool m_use_dispatcher;
00080 struct timeval m_timeval;
00081
00082 virtual void service_thread_main() = 0;
00083
00084 private:
00085 void service_thread_main_proxy();
00086
00087 };
00088
00089 }
00090
00091 #endif