]> git.ipfire.org Git - thirdparty/squid.git/blob - include/memMeter.h
Simplified MSNT basic auth helper
[thirdparty/squid.git] / include / memMeter.h
1 /*
2 * Copyright (C) 1996-2014 The Squid Software Foundation and contributors
3 *
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
7 */
8
9 #ifndef _MEM_METER_H_
10 #define _MEM_METER_H_
11
12 /* object to track per-action memory usage (e.g. #idle objects) */
13 class MemMeter
14 {
15 public:
16 MemMeter() : level(0), hwater_level(0), hwater_stamp(0) {}
17 ssize_t level; /* current level (count or volume) */
18 ssize_t hwater_level; /* high water mark */
19 time_t hwater_stamp; /* timestamp of last high water mark change */
20 };
21
22 #define memMeterSyncHWater(m) { (m).hwater_level = (m).level; (m).hwater_stamp = squid_curtime ? squid_curtime : time(NULL); }
23 #define memMeterCheckHWater(m) { if ((m).hwater_level < (m).level) memMeterSyncHWater((m)); }
24 #define memMeterInc(m) { (m).level++; memMeterCheckHWater(m); }
25 #define memMeterDec(m) { (m).level--; }
26 #define memMeterAdd(m, sz) { (m).level += (sz); memMeterCheckHWater(m); }
27 #define memMeterDel(m, sz) { (m).level -= (sz); }
28
29 #endif /* _MEM_METER_H_ */
30