Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(268)

Side by Side Diff: components/metrics/chromeos/metric_sample.h

Issue 394093003: Moves components/metrics/chromeos to c/m/serialization/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 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.
4
5 #ifndef COMPONENTS_METRICS_CHROMEOS_METRIC_SAMPLE_H_
6 #define COMPONENTS_METRICS_CHROMEOS_METRIC_SAMPLE_H_
7
8 #include <string>
9
10 #include "base/gtest_prod_util.h"
11 #include "base/macros.h"
12 #include "base/memory/scoped_ptr.h"
13
14 namespace metrics {
15
16 // This class is used by libmetrics (ChromeOS) to serialize
17 // and deserialize measurements to send them to a metrics sending service.
18 // It is meant to be a simple container with serialization functions.
19 class MetricSample {
20 public:
21 // Types of metric sample used.
22 enum SampleType {
23 CRASH,
24 HISTOGRAM,
25 LINEAR_HISTOGRAM,
26 SPARSE_HISTOGRAM,
27 USER_ACTION
28 };
29
30 ~MetricSample();
31
32 // Returns true if the sample is valid (can be serialized without ambiguity).
33 //
34 // This function should be used to filter bad samples before serializing them.
35 bool IsValid() const;
36
37 // Getters for type and name. All types of metrics have these so we do not
38 // need to check the type.
39 SampleType type() const { return type_; }
40 const std::string& name() const { return name_; }
41
42 // Getters for sample, min, max, bucket_count.
43 // Check the metric type to make sure the request make sense. (ex: a crash
44 // sample does not have a bucket_count so we crash if we call bucket_count()
45 // on it.)
46 const int sample() const;
47 const int min() const;
48 const int max() const;
49 const int bucket_count() const;
50
51 // Returns a serialized version of the sample.
52 //
53 // The serialized message for each type is:
54 // crash: crash\0|name_|\0
55 // user action: useraction\0|name_|\0
56 // histogram: histogram\0|name_| |sample_| |min_| |max_| |bucket_count_|\0
57 // sparsehistogram: sparsehistogram\0|name_| |sample_|\0
58 // linearhistogram: linearhistogram\0|name_| |sample_| |max_|\0
59 std::string ToString() const;
60
61 // Builds a crash sample.
62 static scoped_ptr<MetricSample> CrashSample(const std::string& crash_name);
63
64 // Builds a histogram sample.
65 static scoped_ptr<MetricSample> HistogramSample(
66 const std::string& histogram_name,
67 int sample,
68 int min,
69 int max,
70 int bucket_count);
71 // Deserializes a histogram sample.
72 static scoped_ptr<MetricSample> ParseHistogram(const std::string& serialized);
73
74 // Builds a sparse histogram sample.
75 static scoped_ptr<MetricSample> SparseHistogramSample(
76 const std::string& histogram_name,
77 int sample);
78 // Deserializes a sparse histogram sample.
79 static scoped_ptr<MetricSample> ParseSparseHistogram(
80 const std::string& serialized);
81
82 // Builds a linear histogram sample.
83 static scoped_ptr<MetricSample> LinearHistogramSample(
84 const std::string& histogram_name,
85 int sample,
86 int max);
87 // Deserializes a linear histogram sample.
88 static scoped_ptr<MetricSample> ParseLinearHistogram(
89 const std::string& serialized);
90
91 // Builds a user action sample.
92 static scoped_ptr<MetricSample> UserActionSample(
93 const std::string& action_name);
94
95 // Returns true if sample and this object represent the same sample (type,
96 // name, sample, min, max, bucket_count match).
97 bool IsEqual(const MetricSample& sample);
98
99 private:
100 MetricSample(SampleType sample_type,
101 const std::string& metric_name,
102 const int sample,
103 const int min,
104 const int max,
105 const int bucket_count);
106
107 const SampleType type_;
108 const std::string name_;
109 const int sample_;
110 const int min_;
111 const int max_;
112 const int bucket_count_;
113
114 DISALLOW_COPY_AND_ASSIGN(MetricSample);
115 };
116
117 } // namespace metrics
118
119 #endif // COMPONENTS_METRICS_CHROMEOS_METRIC_SAMPLE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698