// Copyright (c) 2011 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 "remoting/base/running_average.h" #include "base/logging.h" namespace remoting { RunningAverage::RunningAverage(int window_size) : window_size_(window_size), sum_(0) { DCHECK_GT(window_size, 0); } RunningAverage::~RunningAverage() { } void RunningAverage::Record(int64 value) { base::AutoLock auto_lock(lock_); data_points_.push_back(value); sum_ += value; if (data_points_.size() > window_size_) { sum_ -= data_points_[0]; data_points_.pop_front(); } } double RunningAverage::Average() { base::AutoLock auto_lock(lock_); if (data_points_.empty()) return 0; return static_cast(sum_) / data_points_.size(); } } // namespace remoting