00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef _eoTimedMonitor_h
00028 #define _eoTimedMonitor_h
00029
00030 #include <string>
00031
00032 #include <utils/eoMonitor.h>
00033 #include <eoObject.h>
00034 #include <time.h>
00035
00040 class eoTimedMonitor : public eoMonitor
00041 {
00042 public :
00043 eoTimedMonitor(int seconds_) : seconds(seconds_), last_tick(0) {}
00044
00045 eoMonitor& operator()(void) {
00046 bool monitor = false;
00047 if (last_tick == 0) {
00048 monitor = true;
00049 last_tick = clock();
00050 }
00051
00052 clock_t tick = clock();
00053
00054 if ( (tick-last_tick) >= seconds * CLOCKS_PER_SEC) {
00055 monitor = true;
00056 }
00057
00058 if (monitor) {
00059 for (unsigned i = 0; i < monitors.size(); ++i) {
00060 (*monitors[i])();
00061 }
00062 last_tick = clock();
00063 }
00064 return *this;
00065 }
00066
00067 void add(eoMonitor& mon) { monitors.push_back(&mon); }
00068
00069 virtual std::string className(void) const { return "eoTimedMonitor"; }
00070 private :
00071 clock_t last_tick;
00072 int seconds;
00073 std::vector<eoMonitor*> monitors;
00074 };
00075
00076 #endif