]> git.ipfire.org Git - thirdparty/squid.git/blob - src/DelayBucket.cc
SourceFormat Enforcement
[thirdparty/squid.git] / src / DelayBucket.cc
1 /*
2 * Copyright (C) 1996-2017 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 /* DEBUG: section 77 Delay Pools */
10
11 #include "squid.h"
12
13 #if USE_DELAY_POOLS
14 #include "DelayBucket.h"
15 #include "DelaySpec.h"
16 #include "SquidConfig.h"
17 #include "Store.h"
18
19 void
20 DelayBucket::stats(StoreEntry *entry)const
21 {
22 storeAppendPrintf(entry, "%d", level());
23 }
24
25 void
26 DelayBucket::update(DelaySpec const &rate, int incr)
27 {
28 if (rate.restore_bps != -1 &&
29 (level() += rate.restore_bps * incr) > rate.max_bytes)
30 level() = rate.max_bytes;
31 }
32
33 int
34 DelayBucket::bytesWanted(int minimum, int maximum) const
35 {
36 int result = max(minimum, min(maximum, level()));
37 return result;
38 }
39
40 void
41 DelayBucket::bytesIn(int qty)
42 {
43 level() -= qty;
44 }
45
46 void
47 DelayBucket::init(DelaySpec const &rate)
48 {
49 level() = (int) (((double)rate.max_bytes *
50 Config.Delay.initial) / 100);
51 }
52
53 #endif /* USE_DELAY_POOLS */
54