Reland the ULONG -> SIZE_T change from 317177
[chromium-blink-merge.git] / base / metrics / histogram_flattener.h
blobca05a4f421f415374f4f37d24b9b43f66cbff052
1 // Copyright (c) 2012 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 #ifndef BASE_METRICS_HISTOGRAM_FLATTENER_H_
6 #define BASE_METRICS_HISTOGRAM_FLATTENER_H_
8 #include <map>
9 #include <string>
11 #include "base/basictypes.h"
12 #include "base/metrics/histogram.h"
14 namespace base {
16 class HistogramSamples;
18 // HistogramFlattener is an interface used by HistogramSnapshotManager, which
19 // handles the logistics of gathering up available histograms for recording.
20 // The implementors handle the exact lower level recording mechanism, or
21 // error report mechanism.
22 class BASE_EXPORT HistogramFlattener {
23 public:
24 virtual void RecordDelta(const HistogramBase& histogram,
25 const HistogramSamples& snapshot) = 0;
27 // Will be called each time a type of Inconsistency is seen on a histogram,
28 // during inspections done internally in HistogramSnapshotManager class.
29 virtual void InconsistencyDetected(HistogramBase::Inconsistency problem) = 0;
31 // Will be called when a type of Inconsistency is seen for the first time on
32 // a histogram.
33 virtual void UniqueInconsistencyDetected(
34 HistogramBase::Inconsistency problem) = 0;
36 // Will be called when the total logged sample count of a histogram
37 // differs from the sum of logged sample count in all the buckets. The
38 // argument |amount| is the non-zero discrepancy.
39 virtual void InconsistencyDetectedInLoggedCount(int amount) = 0;
41 protected:
42 HistogramFlattener() {}
43 virtual ~HistogramFlattener() {}
45 private:
46 DISALLOW_COPY_AND_ASSIGN(HistogramFlattener);
49 } // namespace base
51 #endif // BASE_METRICS_HISTOGRAM_FLATTENER_H_