Author: kpvdr
Date: Mon Nov  5 14:39:27 2007
New Revision: 592170

URL: http://svn.apache.org/viewvc?rev=592170&view=rev
Log:
Added reset function to class AbsTime, thus allowing same instance of TimerTask 
to be reset and used again for the same duration as initially set

Modified:
    incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Timer.cpp
    incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Timer.h
    incubator/qpid/trunk/qpid/cpp/src/qpid/sys/Time.h

Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Timer.cpp
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Timer.cpp?rev=592170&r1=592169&r2=592170&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Timer.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Timer.cpp Mon Nov  5 14:39:27 
2007
@@ -27,9 +27,10 @@
 using qpid::sys::Thread;
 using namespace qpid::broker;
 
-TimerTask::TimerTask(Duration timeout) : time(AbsTime::now(), timeout), 
cancelled(false) {}
-TimerTask::TimerTask(AbsTime _time) : time(_time), cancelled(false) {}
+TimerTask::TimerTask(Duration timeout) : duration(timeout), 
time(AbsTime::now(), timeout), cancelled(false) {}
+TimerTask::TimerTask(AbsTime _time) : duration(0), time(_time), 
cancelled(false) {}
 TimerTask::~TimerTask(){}
+void TimerTask::reset() { time.reset(AbsTime::now(), duration); }
 
 Timer::Timer() : active(false) 
 {
@@ -82,6 +83,7 @@
     signalStop();
     runner.join();
 }
+
 void Timer::signalStop()
 {
     Monitor::ScopedLock l(monitor);
@@ -110,6 +112,7 @@
 {
     stop();
 }
+
 void TimerA::run()
 {
     Monitor::ScopedLock l(monitor);
@@ -157,6 +160,7 @@
     signalStop();
     runner.join();
 }
+
 void TimerA::signalStop()
 {
     Monitor::ScopedLock l(monitor);

Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Timer.h
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Timer.h?rev=592170&r1=592169&r2=592170&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Timer.h (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Timer.h Mon Nov  5 14:39:27 
2007
@@ -34,14 +34,16 @@
 
 struct TimerTask
 {
+    const qpid::sys::Duration duration;
     typedef boost::shared_ptr<TimerTask> shared_ptr;
 
-    const qpid::sys::AbsTime time;
+    qpid::sys::AbsTime time;
     volatile bool cancelled;
 
     TimerTask(qpid::sys::Duration timeout);
     TimerTask(qpid::sys::AbsTime time);
     virtual ~TimerTask();
+    void reset();
     virtual void fire() = 0;
 };
 

Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/sys/Time.h
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/sys/Time.h?rev=592170&r1=592169&r2=592170&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/sys/Time.h (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/sys/Time.h Mon Nov  5 14:39:27 2007
@@ -42,6 +42,7 @@
     inline AbsTime(const AbsTime& time0, const Duration& duration);
     // Default asignment operation fine
     // Default copy constructor fine
+    inline void reset(const AbsTime& time0, const Duration& duration);
         
     static AbsTime now();
     inline static AbsTime FarFuture();
@@ -67,6 +68,11 @@
 AbsTime::AbsTime(const AbsTime& t, const Duration& d) :
     time_ns(d == Duration::max() ? max() : t.time_ns+d.nanosecs)
 {}
+
+void AbsTime::reset(const AbsTime& t, const Duration& d)
+{
+    time_ns = d == Duration::max() ? max() : t.time_ns+d.nanosecs;
+}
 
 AbsTime AbsTime::FarFuture() { AbsTime ff; ff.time_ns = max(); return ff;}
 


Reply via email to