#ifndef SRC_HISTOGRAM_INL_H_ #define SRC_HISTOGRAM_INL_H_ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #include "histogram.h" #include "node_internals.h" namespace node { inline Histogram::Histogram(int64_t lowest, int64_t highest, int figures) { CHECK_EQ(0, hdr_init(lowest, highest, figures, &histogram_)); } inline Histogram::~Histogram() { hdr_close(histogram_); } inline void Histogram::Reset() { hdr_reset(histogram_); } inline bool Histogram::Record(int64_t value) { return hdr_record_value(histogram_, value); } inline int64_t Histogram::Min() { return hdr_min(histogram_); } inline int64_t Histogram::Max() { return hdr_max(histogram_); } inline double Histogram::Mean() { return hdr_mean(histogram_); } inline double Histogram::Stddev() { return hdr_stddev(histogram_); } inline double Histogram::Percentile(double percentile) { CHECK_GT(percentile, 0); CHECK_LE(percentile, 100); return hdr_value_at_percentile(histogram_, percentile); } inline void Histogram::Percentiles(std::function fn) { hdr_iter iter; hdr_iter_percentile_init(&iter, histogram_, 1); while (hdr_iter_next(&iter)) { double key = iter.specifics.percentiles.percentile; double value = iter.value; fn(key, value); } } } // namespace node #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #endif // SRC_HISTOGRAM_INL_H_