#ifndef __CLASS_STAT_COUNTERS_H #define __CLASS_STAT_COUNTERS_H #include "proxysql_atomic.h" class StatCounters { private: int last; int keep; void cleanup() { int i; int l=last%len; if (l last ) { last=_i; cleanup(); } val[_i%len]=_v; } void incr(int _i) { if ( _i > last ) { if ( _i > last + keep ) val[_i%len]=0; last=_i; cleanup(); } val[_i%len]++; } void decr(int _i) { if ( _i > last ) { if ( _i > last + keep ) val[_i%len]=0; last=_i; cleanup(); } val[_i%len]--; } int sum(int _i, int _k) { if ( _i > last ) { if ( _i > last + keep ) val[_i%len]=0; last=_i; cleanup(); } int i; int ret=0; for (i=0; i<_k; i++) { ret+=val[(_i-i)%len]; } return ret; } }; #endif /* __CLASS_STAT_COUNTERS_H */