summaryrefslogtreecommitdiffstats
path: root/net/quic/quic_time.cc
diff options
context:
space:
mode:
authorrch@chromium.org <rch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-11 14:48:10 +0000
committerrch@chromium.org <rch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-11 14:48:10 +0000
commit2a960e03abbb0c4225a0d2796a7d93db8a8e9343 (patch)
treee64760f33aba6bb7a679a224560d7b3186609b71 /net/quic/quic_time.cc
parentffaa2a63665d31ba16ab63c2dc447e7543dc5002 (diff)
downloadchromium_src-2a960e03abbb0c4225a0d2796a7d93db8a8e9343.zip
chromium_src-2a960e03abbb0c4225a0d2796a7d93db8a8e9343.tar.gz
chromium_src-2a960e03abbb0c4225a0d2796a7d93db8a8e9343.tar.bz2
QuicTime integration
Merge internal change: 37669847 Review URL: https://chromiumcodereview.appspot.com/11293161 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@167124 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/quic/quic_time.cc')
-rw-r--r--net/quic/quic_time.cc108
1 files changed, 108 insertions, 0 deletions
diff --git a/net/quic/quic_time.cc b/net/quic/quic_time.cc
new file mode 100644
index 0000000..b4c195a
--- /dev/null
+++ b/net/quic/quic_time.cc
@@ -0,0 +1,108 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "net/quic/quic_time.h"
+
+#include "base/logging.h"
+
+namespace net {
+
+// Highest number of microseconds that DateTimeOffset can hold.
+const uint64 kQuicInfiniteTimeUs = GG_UINT64_C(0x7fffffffffffffff) / 10;
+
+QuicTime::Delta::Delta()
+ : delta_(base::TimeDelta::FromMicroseconds(0)) {
+}
+
+QuicTime::Delta::Delta(base::TimeDelta delta)
+ : delta_(delta) {
+}
+
+QuicTime::Delta QuicTime::Delta::Infinite() {
+ return QuicTime::Delta::FromMicroseconds(kQuicInfiniteTimeUs);
+}
+
+bool QuicTime::Delta::IsZero() const {
+ return delta_.InMicroseconds() == 0;
+}
+
+bool QuicTime::Delta::IsInfinite() const {
+ return static_cast<uint64>(delta_.InMicroseconds()) == kQuicInfiniteTimeUs;
+}
+
+QuicTime::Delta QuicTime::Delta::FromMilliseconds(int64 ms) {
+ return QuicTime::Delta(base::TimeDelta::FromMilliseconds(ms));
+}
+
+QuicTime::Delta QuicTime::Delta::FromMicroseconds(int64 us) {
+ return QuicTime::Delta(base::TimeDelta::FromMicroseconds(us));
+}
+
+int64 QuicTime::Delta::ToMilliseconds() const {
+ return delta_.InMilliseconds();
+}
+
+int64 QuicTime::Delta::ToMicroseconds() const {
+ return delta_.InMicroseconds();
+}
+
+QuicTime::Delta QuicTime::Delta::Add(const Delta& delta) const {
+ return QuicTime::Delta::FromMicroseconds(ToMicroseconds() +
+ delta.ToMicroseconds());
+}
+
+QuicTime::Delta QuicTime::Delta::Subtract(const Delta& delta) const {
+ return QuicTime::Delta::FromMicroseconds(ToMicroseconds() -
+ delta.ToMicroseconds());
+}
+
+
+QuicTime::QuicTime() {
+}
+
+QuicTime::QuicTime(base::TimeTicks ticks)
+ : ticks_(ticks) {
+}
+
+QuicTime QuicTime::FromMilliseconds(uint64 time_ms) {
+ // DateTime use 100 ns as resolution make sure we don't pass down too high
+ // values.
+ DCHECK(time_ms < kQuicInfiniteTimeUs / 1000);
+ return QuicTime(base::TimeTicks() +
+ base::TimeDelta::FromMilliseconds(time_ms));
+}
+
+QuicTime QuicTime::FromMicroseconds(uint64 time_us) {
+ // DateTime use 100 ns as resolution make sure we don't pass down too high
+ // values.
+ DCHECK(time_us < kQuicInfiniteTimeUs);
+ return QuicTime(base::TimeTicks() +
+ base::TimeDelta::FromMicroseconds(time_us));
+}
+
+uint64 QuicTime::ToMilliseconds() const {
+ return (ticks_ - base::TimeTicks()).InMilliseconds();
+}
+
+uint64 QuicTime::ToMicroseconds() const {
+ return (ticks_ - base::TimeTicks()).InMicroseconds();
+}
+
+bool QuicTime::IsInitialized() const {
+ return ticks_ != base::TimeTicks();
+}
+
+QuicTime QuicTime::Add(const Delta& delta) const {
+ return QuicTime(ticks_ + delta.delta_);
+}
+
+QuicTime QuicTime::Subtract(const Delta& delta) const {
+ return QuicTime(ticks_ - delta.delta_);
+}
+
+QuicTime::Delta QuicTime::Subtract(const QuicTime& other) const {
+ return QuicTime::Delta(ticks_ - other.ticks_);
+}
+
+} // namespace gfe_quic