Index: components/metrics/chromeos/metric_sample.h |
diff --git a/components/metrics/chromeos/metric_sample.h b/components/metrics/chromeos/metric_sample.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9a940bcfba26030d6eec243ae9779efc3215770b |
--- /dev/null |
+++ b/components/metrics/chromeos/metric_sample.h |
@@ -0,0 +1,119 @@ |
+// Copyright 2014 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. |
+ |
+#ifndef COMPONENTS_METRICS_CHROMEOS_METRIC_SAMPLE_H_ |
+#define COMPONENTS_METRICS_CHROMEOS_METRIC_SAMPLE_H_ |
+ |
+#include <string> |
+ |
+#include "base/gtest_prod_util.h" |
+#include "base/macros.h" |
+#include "base/memory/scoped_ptr.h" |
+ |
+namespace metrics { |
+ |
+// This class and its subclasses are used by libmetrics (ChromeOS) to serialize |
+// and deserialize measurements to send them to a metrics sending service. |
+// It is meant to be a simple container with serialization functions. |
+class MetricSample { |
+ public: |
+ // Types of metric sample used. |
+ enum SampleType { |
+ CRASH, |
+ HISTOGRAM, |
+ LINEAR_HISTOGRAM, |
+ SPARSE_HISTOGRAM, |
+ USER_ACTION |
+ }; |
+ |
+ ~MetricSample(); |
+ |
+ // Return true if the sample is valid (can be serialized without ambiguity). |
+ // |
+ // This function should be used to filter bad samples before serializing them. |
+ bool IsValid() const; |
+ |
+ // Getters for type and name. All types of metrics have these so we do not |
+ // need to check the type. |
+ SampleType type() const { return type_; } |
+ const std::string& name() const { return name_; } |
+ |
+ // Getters for sample, min, max, bucket_count. |
+ // Check the metric type to make sure the request make sense. (ex: a crash |
+ // sample does not have a bucket_count so we crash if we call bucket_count() |
+ // on it.) |
+ const int sample() const; |
+ const int min() const; |
+ const int max() const; |
+ const int bucket_count() const; |
+ |
+ // Return a serialized version of the sample. |
+ // |
+ // The serialized message for each type is: |
+ // crash: crash\0|name_|\0 |
+ // user action: useraction\0|name_|\0 |
+ // histogram: histogram\0|name_| |sample_| |min_| |max_| |bucket_count_|\0 |
+ // sparsehistogram: sparsehistogram\0|name_| |sample_|\0 |
+ // linearhistogram: linearhistogram\0|name_| |sample_| |max_|\0 |
+ std::string ToString() const; |
+ |
+ // Build a Crash |
+ static scoped_ptr<MetricSample> CrashSample(const std::string& crash_name); |
+ |
+ // Build a Histogram |
Luigi Semenzato
2014/05/12 23:04:48
"Build a histogram sample" may be better.
|
+ static scoped_ptr<MetricSample> HistogramSample( |
+ const std::string& histogram_name, |
+ int sample, |
+ int min, |
+ int max, |
+ int bucket_count); |
+ // Deserialize a Histogram |
Luigi Semenzato
2014/05/12 23:04:48
... and also here and the following places.
|
+ static scoped_ptr<MetricSample> ReadHistogram(const std::string& serialized); |
+ |
+ // Build a SparseHistogram |
+ static scoped_ptr<MetricSample> SparseHistogramSample( |
+ const std::string& histogram_name, |
+ int sample); |
+ // Deserialize a SparseHistogram |
+ static scoped_ptr<MetricSample> ReadSparseHistogram( |
+ const std::string& serialized); |
+ |
+ // Build a LinearHistogram |
+ static scoped_ptr<MetricSample> LinearHistogramSample( |
+ const std::string& histogram_name, |
+ int sample, |
+ int max); |
+ // Deserialize a LinearHistogram |
+ static scoped_ptr<MetricSample> ReadLinearHistogram( |
+ const std::string& serialized); |
+ |
+ // Build a UserAction |
+ static scoped_ptr<MetricSample> UserActionSample( |
+ const std::string& action_name); |
+ |
+ // Returns true if sample and this object represent the same sample (type, |
+ // name, sample, min, max, bucket_count match) |
+ bool IsEqual(MetricSample* sample); |
gauravsh
2014/05/12 22:53:10
This can be const?
|
+ |
+ private: |
+ MetricSample(SampleType sample_type, |
+ const std::string& metric_name, |
+ const int sample, |
+ const int min, |
+ const int max, |
+ const int bucket_count); |
+ |
+ const SampleType type_; |
+ const std::string name_; |
+ const int sample_; |
+ const int min_; |
+ const int max_; |
+ const int bucket_count_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(MetricSample); |
+}; |
+ |
+} // namespace metrics |
+ |
+#endif // COMPONENTS_METRICS_CHROMEOS_METRIC_SAMPLE_H_ |