diff options
Diffstat (limited to 'chromium/net/quic/quic_bandwidth.h')
-rw-r--r-- | chromium/net/quic/quic_bandwidth.h | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/chromium/net/quic/quic_bandwidth.h b/chromium/net/quic/quic_bandwidth.h new file mode 100644 index 00000000000..71c4b2d9268 --- /dev/null +++ b/chromium/net/quic/quic_bandwidth.h @@ -0,0 +1,85 @@ +// 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. +// +// QuicBandwidth represents a bandwidth, stored in bits per second resolution. + +#ifndef NET_QUIC_QUIC_BANDWIDTH_H_ +#define NET_QUIC_QUIC_BANDWIDTH_H_ + +#include "base/basictypes.h" +#include "net/quic/quic_time.h" + +namespace net { + +typedef uint64 QuicByteCount; + +class NET_EXPORT_PRIVATE QuicBandwidth { + + public: + // Creates a new QuicBandwidth with an internal value of 0. + static QuicBandwidth Zero(); + + // Create a new QuicBandwidth holding the bits per second. + static QuicBandwidth FromBitsPerSecond(int64 bits_per_second); + + // Create a new QuicBandwidth holding the kilo bits per second. + static QuicBandwidth FromKBitsPerSecond(int64 k_bits_per_second); + + // Create a new QuicBandwidth holding the bytes per second. + static QuicBandwidth FromBytesPerSecond(int64 bytes_per_second); + + // Create a new QuicBandwidth holding the kilo bytes per second. + static QuicBandwidth FromKBytesPerSecond(int64 k_bytes_per_second); + + // Create a new QuicBandwidth based on the bytes per the elapsed delta. + static QuicBandwidth FromBytesAndTimeDelta(QuicByteCount bytes, + QuicTime::Delta delta); + + int64 ToBitsPerSecond() const; + + int64 ToKBitsPerSecond() const; + + int64 ToBytesPerSecond() const; + + int64 ToKBytesPerSecond() const; + + QuicByteCount ToBytesPerPeriod(QuicTime::Delta time_period) const; + + int64 ToKBytesPerPeriod(QuicTime::Delta time_period) const; + + bool IsZero() const; + + QuicBandwidth Add(const QuicBandwidth& delta) const; + + QuicBandwidth Subtract(const QuicBandwidth& delta) const; + + QuicBandwidth Scale(float scale_factor) const; + + private: + explicit QuicBandwidth(int64 bits_per_second); + int64 bits_per_second_; +}; + +// Non-member relational operators for QuicBandwidth. +inline bool operator==(QuicBandwidth lhs, QuicBandwidth rhs) { + return lhs.ToBitsPerSecond() == rhs.ToBitsPerSecond(); +} +inline bool operator!=(QuicBandwidth lhs, QuicBandwidth rhs) { + return !(lhs == rhs); +} +inline bool operator<(QuicBandwidth lhs, QuicBandwidth rhs) { + return lhs.ToBitsPerSecond() < rhs.ToBitsPerSecond(); +} +inline bool operator>(QuicBandwidth lhs, QuicBandwidth rhs) { + return rhs < lhs; +} +inline bool operator<=(QuicBandwidth lhs, QuicBandwidth rhs) { + return !(rhs < lhs); +} +inline bool operator>=(QuicBandwidth lhs, QuicBandwidth rhs) { + return !(lhs < rhs); +} + +} // namespace net +#endif // NET_QUIC_QUIC_BANDWIDTH_H_ |