| Index: webrtc/test/histogram.cc
|
| diff --git a/webrtc/test/histogram.cc b/webrtc/test/histogram.cc
|
| index 6fcdb6864f6ee856638999bb5ede895991a98e20..2893e4389ad61c7c79980d979f06d78fa02ed4b7 100644
|
| --- a/webrtc/test/histogram.cc
|
| +++ b/webrtc/test/histogram.cc
|
| @@ -12,6 +12,7 @@
|
|
|
| #include <map>
|
|
|
| +#include "webrtc/base/checks.h"
|
| #include "webrtc/base/criticalsection.h"
|
| #include "webrtc/base/thread_annotations.h"
|
| #include "webrtc/system_wrappers/include/metrics.h"
|
| @@ -22,10 +23,10 @@
|
| namespace webrtc {
|
| namespace {
|
| struct SampleInfo {
|
| - SampleInfo(int sample)
|
| - : last(sample), total(1) {}
|
| - int last; // Last added sample.
|
| - int total; // Total number of added samples.
|
| + SampleInfo(const std::string& name) : name_(name), last_(-1), total_(0) {}
|
| + const std::string name_;
|
| + int last_; // Last added sample.
|
| + int total_; // Total number of added samples.
|
| };
|
|
|
| rtc::CriticalSection histogram_crit_;
|
| @@ -36,21 +37,33 @@ std::map<std::string, SampleInfo> histograms_ GUARDED_BY(histogram_crit_);
|
|
|
| namespace metrics {
|
| Histogram* HistogramFactoryGetCounts(const std::string& name, int min, int max,
|
| - int bucket_count) { return NULL; }
|
| + int bucket_count) {
|
| + rtc::CritScope cs(&histogram_crit_);
|
| + if (histograms_.find(name) == histograms_.end()) {
|
| + histograms_.insert(std::make_pair(name, SampleInfo(name)));
|
| + }
|
| + auto it = histograms_.find(name);
|
| + return reinterpret_cast<Histogram*>(&it->second);
|
| +}
|
|
|
| Histogram* HistogramFactoryGetEnumeration(const std::string& name,
|
| - int boundary) { return NULL; }
|
| + int boundary) {
|
| + rtc::CritScope cs(&histogram_crit_);
|
| + if (histograms_.find(name) == histograms_.end()) {
|
| + histograms_.insert(std::make_pair(name, SampleInfo(name)));
|
| + }
|
| + auto it = histograms_.find(name);
|
| + return reinterpret_cast<Histogram*>(&it->second);
|
| +}
|
|
|
| void HistogramAdd(
|
| Histogram* histogram_pointer, const std::string& name, int sample) {
|
| rtc::CritScope cs(&histogram_crit_);
|
| - auto it = histograms_.find(name);
|
| - if (it == histograms_.end()) {
|
| - histograms_.insert(std::make_pair(name, SampleInfo(sample)));
|
| - return;
|
| - }
|
| - it->second.last = sample;
|
| - ++it->second.total;
|
| + SampleInfo* ptr = reinterpret_cast<SampleInfo*>(histogram_pointer);
|
| + // The name should not vary.
|
| + RTC_CHECK(ptr->name_ == name);
|
| + ptr->last_ = sample;
|
| + ++ptr->total_;
|
| }
|
| } // namespace metrics
|
|
|
| @@ -61,7 +74,7 @@ int LastHistogramSample(const std::string& name) {
|
| if (it == histograms_.end()) {
|
| return -1;
|
| }
|
| - return it->second.last;
|
| + return it->second.last_;
|
| }
|
|
|
| int NumHistogramSamples(const std::string& name) {
|
| @@ -70,13 +83,15 @@ int NumHistogramSamples(const std::string& name) {
|
| if (it == histograms_.end()) {
|
| return 0;
|
| }
|
| - return it->second.total;
|
| + return it->second.total_;
|
| }
|
|
|
| void ClearHistograms() {
|
| rtc::CritScope cs(&histogram_crit_);
|
| - histograms_.clear();
|
| + for (auto& it : histograms_) {
|
| + it.second.last_ = -1;
|
| + it.second.total_ = 0;
|
| + }
|
| }
|
| } // namespace test
|
| } // namespace webrtc
|
| -
|
|
|