public:
DecayRate() : k(0) {}
+ DecayRate(const DecayRate &dr) : k(dr.k) {}
+
// cppcheck-suppress noExplicitConstructor
DecayRate(double hl) { set_halflife(hl); }
void set_halflife(double hl) {
double delta; // delta since last decay
double vel; // recent velocity
utime_t last_decay; // time of last decay
+ DecayRate rate;
void encode(bufferlist& bl) const;
void decode(const utime_t &t, bufferlist::iterator& p);
{
}
+ explicit DecayCounter(const utime_t &now, const DecayRate &rate)
+ : val(0), delta(0), vel(0), last_decay(now), rate(rate)
+ {
+ }
+
// these two functions are for the use of our dencoder testing infrastructure
DecayCounter() : val(0), delta(0), vel(0), last_decay() {}
decay(now, rate);
return val+delta;
}
+ double get(utime_t now) {
+ decay(now, rate);
+ return val+delta;
+ }
double get_last() {
return val;
delta += v;
return val+delta;
}
+ double hit(utime_t now, double v = 1.0) {
+ decay(now, rate);
+ delta += v;
+ return val+delta;
+ }
void adjust(double a) {
val += a;