diff options
| author | Alan Conway <aconway@apache.org> | 2007-07-23 13:08:16 +0000 |
|---|---|---|
| committer | Alan Conway <aconway@apache.org> | 2007-07-23 13:08:16 +0000 |
| commit | 1a469b992ef2f28d98f43e63cf4d520c1bf830a4 (patch) | |
| tree | c743052e2d2ab10a28960234e3efd3534cdb14c1 /cpp/src/qpid/sys/Time.h | |
| parent | 4ab144d3d0a48a4abc1814e3244ef830344f19b2 (diff) | |
| download | qpid-python-1a469b992ef2f28d98f43e63cf4d520c1bf830a4.tar.gz | |
* 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
Diffstat (limited to 'cpp/src/qpid/sys/Time.h')
| -rw-r--r-- | cpp/src/qpid/sys/Time.h | 48 |
1 files changed, 25 insertions, 23 deletions
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<int64_t>::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<int64_t>::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<int64_t>::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 |
