17 #ifndef JUBATUS_CORE_STAT_STAT_HPP_
18 #define JUBATUS_CORE_STAT_STAT_HPP_
26 #include "jubatus/util/concurrent/rwmutex.h"
27 #include "jubatus/util/data/unordered_map.h"
28 #include "jubatus/util/lang/enable_shared_from_this.h"
29 #include "jubatus/util/lang/shared_ptr.h"
30 #include "../common/version.hpp"
31 #include "../common/exception.hpp"
32 #include "../common/unordered_map.hpp"
33 #include "../framework/mixable_helper.hpp"
47 const char*
what()
const throw() {
55 class stat :
public jubatus::util::lang::enable_shared_from_this<stat> {
57 explicit stat(
size_t window_size);
60 virtual void get_diff(std::pair<double, size_t>& ret)
const;
61 virtual bool put_diff(
const std::pair<double, size_t>&);
63 const std::pair<double, size_t>& lhs,
64 std::pair<double, size_t>& ret)
const;
66 void push(
const std::string& key,
double val);
68 double sum(
const std::string& key)
const;
69 double stddev(
const std::string& key)
const;
70 double max(
const std::string& key)
const;
71 double min(
const std::string& key)
const;
74 double moment(
const std::string& key,
int n,
double c)
const;
82 virtual void unpack(msgpack::object o);
83 std::string
type()
const;
113 void rem(
double d,
const std::string& key,
stat& st) {
120 for (
size_t i = 0; i < st.window_.size(); ++i) {
121 if (st.window_[i].second.first != key) {
124 double d = st.window_[i].second.second;
139 for (
size_t i = 0; i < st.window_.size(); ++i) {
140 if (st.window_[i].second.first != key) {
143 double d = st.window_[i].second.second;
166 std::deque<std::pair<uint64_t, std::pair<std::string, double> > >
window_;
167 jubatus::util::data::unordered_map<std::string, stat_val>
stats_;
186 #endif // JUBATUS_CORE_STAT_STAT_HPP_
virtual double entropy() const
MSGPACK_DEFINE(n_, sum_, sum2_, max_, min_)
double stddev(const std::string &key) const
void rem(double d, const std::string &key, stat &st)
double max(const std::string &key) const
std::deque< std::pair< uint64_t, std::pair< std::string, double > > > window_
double sum(const std::string &key) const
virtual void unpack(msgpack::object o)
virtual void pack(framework::packer &packer) const
MSGPACK_DEFINE(window_size_, window_, stats_, e_, n_)
double min(const std::string &key) const
double moment(const std::string &key, int n, double c) const
msgpack::packer< jubatus_packer > packer
virtual void get_diff(std::pair< double, size_t > &ret) const
void push(const std::string &key, double val)
framework::linear_mixable_helper< stat, std::pair< double, size_t > > mixable_stat
virtual void mix(const std::pair< double, size_t > &lhs, std::pair< double, size_t > &ret) const
const char * what() const
jubatus::util::data::unordered_map< std::string, stat_val > stats_
storage::version get_version() const
stat_error(const std::string &msg)
virtual bool put_diff(const std::pair< double, size_t > &)