 Chromium Code Reviews
 Chromium Code Reviews Issue 649763002:
  git cl format the second third of the net/base directory  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master
    
  
    Issue 649763002:
  git cl format the second third of the net/base directory  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master| OLD | NEW | 
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #ifndef NET_BASE_BANDWIDTH_METRICS_H_ | 5 #ifndef NET_BASE_BANDWIDTH_METRICS_H_ | 
| 6 #define NET_BASE_BANDWIDTH_METRICS_H_ | 6 #define NET_BASE_BANDWIDTH_METRICS_H_ | 
| 7 | 7 | 
| 8 #include <list> | 8 #include <list> | 
| 9 | 9 | 
| 10 #include "base/logging.h" | 10 #include "base/logging.h" | 
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 50 // tracker.StopStream(); | 50 // tracker.StopStream(); | 
| 51 // | 51 // | 
| 52 // NOTE: This class is not thread safe. | 52 // NOTE: This class is not thread safe. | 
| 53 // | 53 // | 
| 54 class BandwidthMetrics { | 54 class BandwidthMetrics { | 
| 55 public: | 55 public: | 
| 56 BandwidthMetrics() | 56 BandwidthMetrics() | 
| 57 : num_streams_in_progress_(0), | 57 : num_streams_in_progress_(0), | 
| 58 num_data_samples_(0), | 58 num_data_samples_(0), | 
| 59 data_sum_(0.0), | 59 data_sum_(0.0), | 
| 60 bytes_since_last_start_(0) { | 60 bytes_since_last_start_(0) {} | 
| 61 } | |
| 62 | 61 | 
| 63 // Get the bandwidth. Returns Kbps (kilo-bits-per-second). | 62 // Get the bandwidth. Returns Kbps (kilo-bits-per-second). | 
| 64 double bandwidth() const { | 63 double bandwidth() const { return data_sum_ / num_data_samples_; } | 
| 65 return data_sum_ / num_data_samples_; | |
| 66 } | |
| 67 | 64 | 
| 68 // Record that we've started a stream. | 65 // Record that we've started a stream. | 
| 69 void StartStream() { | 66 void StartStream() { | 
| 70 // If we're the only stream, we've finished some idle time. Record a new | 67 // If we're the only stream, we've finished some idle time. Record a new | 
| 71 // timestamp to indicate the start of data flow. | 68 // timestamp to indicate the start of data flow. | 
| 72 if (++num_streams_in_progress_ == 1) { | 69 if (++num_streams_in_progress_ == 1) { | 
| 73 last_start_ = base::TimeTicks::HighResNow(); | 70 last_start_ = base::TimeTicks::HighResNow(); | 
| 74 bytes_since_last_start_ = 0; | 71 bytes_since_last_start_ = 0; | 
| 75 } | 72 } | 
| 76 } | 73 } | 
| 77 | 74 | 
| 78 // Track that we've completed a stream. | 75 // Track that we've completed a stream. | 
| 79 void StopStream() { | 76 void StopStream() { | 
| 80 if (--num_streams_in_progress_ == 0) { | 77 if (--num_streams_in_progress_ == 0) { | 
| 81 // We don't use small streams when tracking bandwidth because they are not | 78 // We don't use small streams when tracking bandwidth because they are not | 
| 82 // precise; imagine a 25 byte stream. The sample is too small to make | 79 // precise; imagine a 25 byte stream. The sample is too small to make | 
| 83 // a good measurement. | 80 // a good measurement. | 
| 84 // 20KB is an arbitrary value. We might want to use a lesser value. | 81 // 20KB is an arbitrary value. We might want to use a lesser value. | 
| 85 static const int64 kRecordSizeThreshold = 20 * 1024; | 82 static const int64 kRecordSizeThreshold = 20 * 1024; | 
| 86 if (bytes_since_last_start_ < kRecordSizeThreshold) | 83 if (bytes_since_last_start_ < kRecordSizeThreshold) | 
| 87 return; | 84 return; | 
| 88 | 85 | 
| 89 base::TimeDelta delta = base::TimeTicks::HighResNow() - last_start_; | 86 base::TimeDelta delta = base::TimeTicks::HighResNow() - last_start_; | 
| 90 double ms = delta.InMillisecondsF(); | 87 double ms = delta.InMillisecondsF(); | 
| 91 if (ms > 0.0) { | 88 if (ms > 0.0) { | 
| 92 double kbps = static_cast<double>(bytes_since_last_start_) * 8 / ms; | 89 double kbps = static_cast<double>(bytes_since_last_start_) * 8 / ms; | 
| 93 ++num_data_samples_; | 90 ++num_data_samples_; | 
| 94 data_sum_ += kbps; | 91 data_sum_ += kbps; | 
| 95 VLOG(1) << "Bandwidth: " << kbps | 92 VLOG(1) << "Bandwidth: " << kbps << "Kbps (avg " << bandwidth() | 
| 96 << "Kbps (avg " << bandwidth() << "Kbps)"; | 93 << "Kbps)"; | 
| 
davidben
2014/10/10 20:24:15
No action: I feel like the old one is slightly bet
 | |
| 97 int kbps_int = static_cast<int>(kbps); | 94 int kbps_int = static_cast<int>(kbps); | 
| 98 UMA_HISTOGRAM_COUNTS_10000("Net.DownloadBandwidth", kbps_int); | 95 UMA_HISTOGRAM_COUNTS_10000("Net.DownloadBandwidth", kbps_int); | 
| 99 } | 96 } | 
| 100 } | 97 } | 
| 101 } | 98 } | 
| 102 | 99 | 
| 103 // Add a sample of the number of bytes read from the network into the tracker. | 100 // Add a sample of the number of bytes read from the network into the tracker. | 
| 104 void RecordBytes(int bytes) { | 101 void RecordBytes(int bytes) { | 
| 105 DCHECK(num_streams_in_progress_); | 102 DCHECK(num_streams_in_progress_); | 
| 106 bytes_since_last_start_ += static_cast<int64>(bytes); | 103 bytes_since_last_start_ += static_cast<int64>(bytes); | 
| 107 } | 104 } | 
| 108 | 105 | 
| 109 private: | 106 private: | 
| 110 int num_streams_in_progress_; // The number of streams in progress. | 107 int num_streams_in_progress_; // The number of streams in progress. | 
| 111 // TODO(mbelshe): Use a rolling buffer of 30 samples instead of an average. | 108 // TODO(mbelshe): Use a rolling buffer of 30 samples instead of an average. | 
| 112 int num_data_samples_; // The number of samples collected. | 109 int num_data_samples_; // The number of samples collected. | 
| 113 double data_sum_; // The sum of all samples collected. | 110 double data_sum_; // The sum of all samples collected. | 
| 114 int64 bytes_since_last_start_; // Bytes tracked during this "session". | 111 int64 bytes_since_last_start_; // Bytes tracked during this "session". | 
| 115 base::TimeTicks last_start_; // Timestamp of the begin of this "session". | 112 base::TimeTicks last_start_; // Timestamp of the begin of this "session". | 
| 116 }; | 113 }; | 
| 117 | 114 | 
| 118 // A utility class for managing the lifecycle of a measured stream. | 115 // A utility class for managing the lifecycle of a measured stream. | 
| 119 // It is important that we not leave unclosed streams, and this class helps | 116 // It is important that we not leave unclosed streams, and this class helps | 
| 120 // ensure we always stop them. | 117 // ensure we always stop them. | 
| 121 class ScopedBandwidthMetrics { | 118 class ScopedBandwidthMetrics { | 
| 122 public: | 119 public: | 
| 123 ScopedBandwidthMetrics(); | 120 ScopedBandwidthMetrics(); | 
| 124 ~ScopedBandwidthMetrics(); | 121 ~ScopedBandwidthMetrics(); | 
| 125 | 122 | 
| 126 void StartStream(); | 123 void StartStream(); | 
| 127 void StopStream(); | 124 void StopStream(); | 
| 128 void RecordBytes(int bytes); | 125 void RecordBytes(int bytes); | 
| 129 | 126 | 
| 130 private: | 127 private: | 
| 131 bool started_; | 128 bool started_; | 
| 132 }; | 129 }; | 
| 133 | 130 | 
| 134 } // namespace net | 131 } // namespace net | 
| 135 | 132 | 
| 136 #endif // NET_BASE_BANDWIDTH_METRICS_H_ | 133 #endif // NET_BASE_BANDWIDTH_METRICS_H_ | 
| OLD | NEW |