00001
00002
00003
00004
00005 #ifndef MEDIDA_HISTOGRAM_H_
00006 #define MEDIDA_HISTOGRAM_H_
00007
00008 #include <cstdint>
00009 #include <memory>
00010
00011 #include "medida/metric_interface.h"
00012 #include "medida/sampling_interface.h"
00013 #include "medida/summarizable_interface.h"
00014 #include "medida/stats/sample.h"
00015
00016 namespace medida {
00017
00018 class Histogram : public MetricInterface, SamplingInterface, SummarizableInterface {
00019 public:
00020 Histogram(SampleType sample_type = kUniform);
00021 ~Histogram();
00022 virtual stats::Snapshot GetSnapshot() const;
00023 virtual double sum() const;
00024 virtual double max() const;
00025 virtual double min() const;
00026 virtual double mean() const;
00027 virtual double std_dev() const;
00028 void Update(std::int64_t value);
00029 std::uint64_t count() const;
00030 double variance() const;
00031 void Process(MetricProcessor& processor);
00032 void Clear();
00033 private:
00034 class Impl;
00035 std::unique_ptr<Impl> impl_;
00036 };
00037
00038 }
00039
00040 #endif // MEDIDA_HISTOGRAM_H_