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;}