1 // excerpts from http://code.google.com/p/muduo/ 2 // 3 // Use of this source code is governed by a BSD-style license 4 // that can be found in the License file. 5 // 6 // Author: Shuo Chen (chenshuo at chenshuo dot com) 7 8 #ifndef MUDUO_NET_TIMER_H 9 #define MUDUO_NET_TIMER_H 10 11 #include <boost/noncopyable.hpp> 12 13 #include "datetime/Timestamp.h" 14+#include "thread/Atomic.h" 15 #include "Callbacks.h" 16 17 namespace muduo 18 { 19 20 /// 21 /// Internal class for timer event. 22 /// 23 class Timer : boost::noncopyable 24 { 25 public: 26 Timer(const TimerCallback& cb, Timestamp when, double interval) 27 : callback_(cb), 28 expiration_(when), 29 interval_(interval), 30 repeat_(interval > 0.0), 31+ sequence_(s_numCreated_.incrementAndGet()) 32 { 33 } 34 35 void run() const 36 { 37 callback_(); 38 } 39 40 Timestamp expiration() const { return expiration_; } 41 bool repeat() const { return repeat_; } 42+ int64_t sequence() const { return sequence_; } 43 44 void restart(Timestamp now); 45 46 private: 47 const TimerCallback callback_; 48 Timestamp expiration_; 49 const double interval_; 50 const bool repeat_; 51+ const int64_t sequence_; 52+ 53+ static AtomicInt64 s_numCreated_; 54 }; 55 56 } 57 #endif // MUDUO_NET_TIMER_H 58