Index: remoting/base/running_average.h |
diff --git a/remoting/base/running_average.h b/remoting/base/running_average.h |
index bc556b9a0001cc1d5daa9753e943ac95d4a8db1b..042f773c7a71b096a77c8d35a5cce7a03bce105f 100644 |
--- a/remoting/base/running_average.h |
+++ b/remoting/base/running_average.h |
@@ -2,50 +2,40 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-// RunningAverage defined in this file is used to generate statistics for |
-// bandwidth, latency and other performance metrics for remoting. Usually |
-// this data comes in as a stream and fluctuates a lot. They are processed by |
-// this class to generate a more stable value by taking average within a |
-// window of data points. |
- |
-// All classes defined are thread-safe. |
- |
#ifndef REMOTING_BASE_RUNNING_AVERAGE_H_ |
#define REMOTING_BASE_RUNNING_AVERAGE_H_ |
#include <deque> |
#include "base/basictypes.h" |
-#include "base/synchronization/lock.h" |
+#include "base/threading/non_thread_safe.h" |
namespace remoting { |
-class RunningAverage { |
+// Calculates the average of the most recent N recorded samples. |
+// This is typically used to smooth out random variation in point samples |
+// over bandwidth, frame rate, etc. |
+class RunningAverage : public base::NonThreadSafe { |
public: |
- // Construct a running average counter for a specific window size. The |
- // |windows_size| most recent values are kept and the average is reported. |
+ // Constructs a helper to average over the |window_size| most recent samples. |
explicit RunningAverage(int window_size); |
- |
virtual ~RunningAverage(); |
- // Record the provided data point. |
+ // Records a point sample. |
void Record(int64 value); |
- // Return the average of data points in the last window. |
- double Average(); |
+ // Returns the average over up to |window_size| of the most recent samples. |
+ double Average() const; |
private: |
- // Size of the window. This is of type size_t to avoid casting when comparing |
+ // Stores the desired window size, as size_t to avoid casting when comparing |
// with the size of |data_points_|. |
- size_t window_size_; |
- |
- // Protects |data_points_| and |sum_|. |
- base::Lock lock_; |
+ const size_t window_size_; |
- // Keep the values of all the data points. |
+ // Stores the |window_size| most recently recorded samples. |
std::deque<int64> data_points_; |
- // Sum of values in |data_points_|. |
+ // Holds the sum of the samples in |data_points_|. |
int64 sum_; |
DISALLOW_COPY_AND_ASSIGN(RunningAverage); |