00001 #ifndef _Updater_h_ 00002 #define _Updater_h_ 00003 00004 #include <pthread.h> 00005 #include <list> 00006 00007 class DQMOldReceiver; 00008 namespace dqm 00009 { 00010 class UpdateObserver; 00011 00012 class Updater 00013 { 00014 private: 00015 typedef std::list<dqm::UpdateObserver *> olist; 00016 typedef olist::const_iterator obi; 00017 pthread_t worker; 00018 DQMOldReceiver *mui; 00019 olist obs_; 00020 bool observed; 00021 bool running; 00022 00023 public: 00024 00025 Updater(DQMOldReceiver *the_mui); 00026 00027 ~Updater() 00028 { 00031 pthread_cancel( worker ); 00032 } 00033 00034 void registerObserver(dqm::UpdateObserver *); 00035 00036 void request_update(); 00037 00039 static void *start(void *pthis); 00040 00041 void setRunning() 00042 { 00043 running = true; 00044 } 00045 00046 bool checkRunning() const 00047 { 00048 return running; 00049 } 00050 00051 void setStopped() 00052 { 00053 running=false; 00054 } 00055 00056 }; 00057 } 00058 00059 #endif