quic_time.cc revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "net/quic/quic_time.h" 6 7#include "base/logging.h" 8 9namespace net { 10 11// Highest number of microseconds that DateTimeOffset can hold. 12const int64 kQuicInfiniteTimeUs = GG_INT64_C(0x7fffffffffffffff) / 10; 13 14QuicTime::Delta::Delta(base::TimeDelta delta) 15 : delta_(delta) { 16} 17 18// static 19QuicTime::Delta QuicTime::Delta::Zero() { 20 return QuicTime::Delta::FromMicroseconds(0); 21} 22 23// static 24QuicTime::Delta QuicTime::Delta::Infinite() { 25 return QuicTime::Delta::FromMicroseconds(kQuicInfiniteTimeUs); 26} 27 28// static 29QuicTime::Delta QuicTime::Delta::FromSeconds(int64 seconds) { 30 return QuicTime::Delta(base::TimeDelta::FromSeconds(seconds)); 31} 32 33// static 34QuicTime::Delta QuicTime::Delta::FromMilliseconds(int64 ms) { 35 return QuicTime::Delta(base::TimeDelta::FromMilliseconds(ms)); 36} 37 38// static 39QuicTime::Delta QuicTime::Delta::FromMicroseconds(int64 us) { 40 return QuicTime::Delta(base::TimeDelta::FromMicroseconds(us)); 41} 42 43int64 QuicTime::Delta::ToSeconds() const { 44 return delta_.InSeconds(); 45} 46 47int64 QuicTime::Delta::ToMilliseconds() const { 48 return delta_.InMilliseconds(); 49} 50 51int64 QuicTime::Delta::ToMicroseconds() const { 52 return delta_.InMicroseconds(); 53} 54 55QuicTime::Delta QuicTime::Delta::Add(const Delta& delta) const { 56 return QuicTime::Delta::FromMicroseconds(ToMicroseconds() + 57 delta.ToMicroseconds()); 58} 59 60QuicTime::Delta QuicTime::Delta::Subtract(const Delta& delta) const { 61 return QuicTime::Delta::FromMicroseconds(ToMicroseconds() - 62 delta.ToMicroseconds()); 63} 64 65bool QuicTime::Delta::IsZero() const { 66 return delta_.InMicroseconds() == 0; 67} 68 69bool QuicTime::Delta::IsInfinite() const { 70 return delta_.InMicroseconds() == kQuicInfiniteTimeUs; 71} 72 73// static 74QuicTime QuicTime::Zero() { 75 return QuicTime::FromMilliseconds(0); 76} 77 78// static 79QuicTime QuicTime::FromMilliseconds(int64 time_ms) { 80 // DateTime use 100 ns as resolution make sure we don't pass down too high 81 // values. 82 DCHECK(time_ms < kQuicInfiniteTimeUs / 1000); 83 return QuicTime(base::TimeTicks() + 84 base::TimeDelta::FromMilliseconds(time_ms)); 85} 86 87// static 88QuicTime QuicTime::FromMicroseconds(int64 time_us) { 89 // DateTime use 100 ns as resolution make sure we don't pass down too high 90 // values. 91 DCHECK(time_us < kQuicInfiniteTimeUs); 92 return QuicTime(base::TimeTicks() + 93 base::TimeDelta::FromMicroseconds(time_us)); 94} 95 96QuicTime::QuicTime(base::TimeTicks ticks) 97 : ticks_(ticks) { 98} 99 100int64 QuicTime::ToMilliseconds() const { 101 return (ticks_ - base::TimeTicks()).InMilliseconds(); 102} 103 104int64 QuicTime::ToMicroseconds() const { 105 return (ticks_ - base::TimeTicks()).InMicroseconds(); 106} 107 108bool QuicTime::IsInitialized() const { 109 return ticks_ != base::TimeTicks(); 110} 111 112QuicTime QuicTime::Add(const Delta& delta) const { 113 return QuicTime(ticks_ + delta.delta_); 114} 115 116QuicTime QuicTime::Subtract(const Delta& delta) const { 117 return QuicTime(ticks_ - delta.delta_); 118} 119 120QuicTime::Delta QuicTime::Subtract(const QuicTime& other) const { 121 return QuicTime::Delta(ticks_ - other.ticks_); 122} 123 124} // namespace net 125