From 1a469b992ef2f28d98f43e63cf4d520c1bf830a4 Mon Sep 17 00:00:00 2001 From: Alan Conway Date: Mon, 23 Jul 2007 13:08:16 +0000 Subject: * src/tests/cluster.mk: Enable cluster test. * src/tests/Cluster.h (class TestHandler): Fixed race in TestHandler::waitFor * src/tests/Cluster.cpp - Allow separate start of parent and child processes. * src/qpid/Options.cpp (parse): Skip argv parsing if argc=0. * src/qpid/cluster/Cluster.cpp (configChange): assert group name. * src/qpid/cluster/Cpg.cpp, .h: Additional logging * src/qpid/framing/AMQFrame.cpp: Initialize all fields in ctor, avoid valgrind warning. * src/qpid/log/Logger.cpp: Initialize singleton automatically from environment so logging can be used on tests. * src/qpid/sys/Time.h: Avoid overflow in AbsTime(t, TIME_INFINITE) git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@558710 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/sys/Time.h | 48 +++++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 23 deletions(-) (limited to 'cpp/src/qpid/sys/Time.h') diff --git a/cpp/src/qpid/sys/Time.h b/cpp/src/qpid/sys/Time.h index 25b1606844..cff5b70d8e 100644 --- a/cpp/src/qpid/sys/Time.h +++ b/cpp/src/qpid/sys/Time.h @@ -32,41 +32,43 @@ class Duration; /** Times in nanoseconds */ class AbsTime { + static int64_t max() { return std::numeric_limits::max(); } int64_t time_ns; - - friend class Duration; + + friend class Duration; -public: - inline AbsTime() {} - inline AbsTime(const AbsTime& time0, const Duration& duration); - // Default asignment operation fine - // Default copy constructor fine + public: + inline AbsTime() {} + inline AbsTime(const AbsTime& time0, const Duration& duration); + // Default asignment operation fine + // Default copy constructor fine - static AbsTime now(); - inline static AbsTime FarFuture(); + static AbsTime now(); + inline static AbsTime FarFuture(); - friend bool operator<(const AbsTime& a, const AbsTime& b); - friend bool operator>(const AbsTime& a, const AbsTime& b); + friend bool operator<(const AbsTime& a, const AbsTime& b); + friend bool operator>(const AbsTime& a, const AbsTime& b); }; class Duration { + static int64_t max() { return std::numeric_limits::max(); } int64_t nanosecs; - friend class AbsTime; + friend class AbsTime; -public: - inline Duration(int64_t time0); - inline explicit Duration(const AbsTime& time0); - inline explicit Duration(const AbsTime& start, const AbsTime& finish); - inline operator int64_t() const; + public: + inline Duration(int64_t time0); + inline explicit Duration(const AbsTime& time0); + inline explicit Duration(const AbsTime& start, const AbsTime& finish); + inline operator int64_t() const; }; -AbsTime::AbsTime(const AbsTime& time0, const Duration& duration0) : - time_ns(time0.time_ns+duration0.nanosecs) +AbsTime::AbsTime(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 = std::numeric_limits::max(); return ff;} +AbsTime AbsTime::FarFuture() { AbsTime ff; ff.time_ns = max(); return ff;} inline AbsTime now() { return AbsTime::now(); } @@ -74,15 +76,15 @@ inline bool operator<(const AbsTime& a, const AbsTime& b) { return a.time_ns < b inline bool operator>(const AbsTime& a, const AbsTime& b) { return a.time_ns > b.time_ns; } Duration::Duration(int64_t time0) : - nanosecs(time0) + nanosecs(time0) {} Duration::Duration(const AbsTime& time0) : - nanosecs(time0.time_ns) + nanosecs(time0.time_ns) {} Duration::Duration(const AbsTime& start, const AbsTime& finish) : - nanosecs(finish.time_ns - start.time_ns) + nanosecs(finish.time_ns - start.time_ns) {} Duration::operator int64_t() const -- cgit v1.2.1