00001 #ifndef ERIS_TIMEOUT_H
00002 #define ERIS_TIMEOUT_H
00003
00004 #include <Eris/TimedEventService.h>
00005
00006 #include <sigc++/trackable.h>
00007 #include <sigc++/signal.h>
00008
00009 namespace Eris {
00010
00012 class Timeout : public TimedEvent, virtual public sigc::trackable
00013 {
00014 public:
00015
00021 Timeout(unsigned long milli);
00022
00023 virtual ~Timeout();
00024
00026 Timeout& operator=(const Timeout &t);
00027
00034 void extend(unsigned long msec);
00035
00041 void reset(unsigned long msec);
00042
00044 void cancel();
00045
00047 bool isExpired() const;
00048
00050 sigc::signal<void> Expired;
00051
00052 virtual void expired();
00053
00054 virtual const WFMath::TimeStamp& due() const
00055 {
00056 return _due;
00057 }
00058 protected:
00059 WFMath::TimeStamp _due;
00060 bool _fired;
00061
00062 private:
00064 Timeout(const Timeout &t);
00065 };
00066
00067 }
00068
00069 #endif