]> git.ipfire.org Git - thirdparty/squid.git/blob - include/memMeter.h
Merged from trunk
[thirdparty/squid.git] / include / memMeter.h
1 #ifndef _MEM_METER_H_
2 #define _MEM_METER_H_
3
4 /* object to track per-action memory usage (e.g. #idle objects) */
5 class MemMeter
6 {
7 public:
8 MemMeter() : level(0), hwater_level(0), hwater_stamp(0) {}
9 ssize_t level; /* current level (count or volume) */
10 ssize_t hwater_level; /* high water mark */
11 time_t hwater_stamp; /* timestamp of last high water mark change */
12 };
13
14 #define memMeterSyncHWater(m) { (m).hwater_level = (m).level; (m).hwater_stamp = squid_curtime ? squid_curtime : time(NULL); }
15 #define memMeterCheckHWater(m) { if ((m).hwater_level < (m).level) memMeterSyncHWater((m)); }
16 #define memMeterInc(m) { (m).level++; memMeterCheckHWater(m); }
17 #define memMeterDec(m) { (m).level--; }
18 #define memMeterAdd(m, sz) { (m).level += (sz); memMeterCheckHWater(m); }
19 #define memMeterDel(m, sz) { (m).level -= (sz); }
20
21 #endif /* _MEM_METER_H_ */