1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "components/rappor/sampler.h"
10 #include "base/rand_util.h"
18 Sampler::~Sampler() {}
20 void Sampler::AddSample(const std::string
& metric_name
,
21 scoped_ptr
<Sample
> sample
) {
22 ++sample_counts_
[metric_name
];
23 // Replace the previous sample with a 1 in sample_count_ chance so that each
24 // sample has equal probability of being reported.
25 if (base::RandGenerator(sample_counts_
[metric_name
]) == 0)
26 samples_
.set(metric_name
, sample
.Pass());
29 void Sampler::ExportMetrics(const std::string
& secret
, RapporReports
* reports
) {
30 for (const auto& kv
: samples_
) {
31 kv
.second
->ExportMetrics(secret
, kv
.first
, reports
);
34 sample_counts_
.clear();
37 } // namespace internal