]>
git.ipfire.org Git - thirdparty/squid.git/blob - src/FadingCounter.h
1 #ifndef SQUID_FADING_COUNTER_H
2 #define SQUID_FADING_COUNTER_H
6 /// Counts events, forgetting old ones. Usefull for "3 errors/minute" limits.
12 /// 0=remember nothing; -1=forget nothing; new value triggers clear()
13 void configure(double horizonSeconds
);
15 void clear(); ///< forgets all events
17 int count(int howMany
); ///< count fresh, return #events remembered
18 int remembered() const { return total
; } ///< possibly stale #events
20 /// read-only memory horizon in seconds; older events are forgotten
24 const int precision
; ///< #counting slots, controls measur. occuracy
25 double delta
; ///< sub-interval duration = horizon/precision
27 double lastTime
; ///< time of the last update
28 std::vector
<int> counters
; ///< events per delta (possibly stale)
29 int total
; ///< number of remembered events (possibly stale)
32 #endif /* SQUID_FADING_COUNTER_H */