diff options
author | rch@chromium.org <rch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-11 14:48:10 +0000 |
---|---|---|
committer | rch@chromium.org <rch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-11 14:48:10 +0000 |
commit | 2a960e03abbb0c4225a0d2796a7d93db8a8e9343 (patch) | |
tree | e64760f33aba6bb7a679a224560d7b3186609b71 /net/quic/quic_time.cc | |
parent | ffaa2a63665d31ba16ab63c2dc447e7543dc5002 (diff) | |
download | chromium_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.cc | 108 |
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 |