Medida
meter.h
00001 //
00002 // Copyright (c) 2012 Daniel Lundin
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 } // namespace medida
00039 
00040 #endif // MEDIDA_METER_H_
 All Classes