00001
00002
00003
00004
00005 #ifndef MEDIDA_METER_H_
00006 #define MEDIDA_METER_H_
00007
00008 #include <cstdint>
00009 #include <memory>
00010 #include <string>
00011
00012 #include "medida/stats/ewma.h"
00013 #include "medida/metered_interface.h"
00014 #include "medida/metric_interface.h"
00015 #include "medida/metric_processor.h"
00016 #include "medida/stats/sample.h"
00017
00018 namespace medida {
00019
00020 class Meter : public MetricInterface, MeteredInterface {
00021 public:
00022 Meter(std::string event_type, std::chrono::nanoseconds rate_unit = std::chrono::seconds(1));
00023 ~Meter();
00024 virtual std::chrono::nanoseconds rate_unit() const;
00025 virtual std::string event_type() const;
00026 virtual std::uint64_t count() const;
00027 virtual double fifteen_minute_rate();
00028 virtual double five_minute_rate();
00029 virtual double one_minute_rate();
00030 virtual double mean_rate();
00031 void Mark(std::uint64_t n = 1);
00032 void Process(MetricProcessor& processor);
00033 private:
00034 class Impl;
00035 std::unique_ptr<Impl> impl_;
00036 };
00037
00038 }
00039
00040 #endif // MEDIDA_METER_H_