DelayBucket.cc
Go to the documentation of this file.
1 /*
2  * Copyright (C) 1996-2023 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
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
42 {
43  level() -= qty;
44 }
45 
46 void
48 {
49  level() = (int) (((double)rate.max_bytes *
50  Config.Delay.initial) / 100);
51 }
52 
53 #endif /* USE_DELAY_POOLS */
54 
void init(DelaySpec const &)
Definition: DelayBucket.cc:47
void storeAppendPrintf(StoreEntry *e, const char *fmt,...)
Definition: store.cc:855
int bytesWanted(int min, int max) const
Definition: DelayBucket.cc:34
const A & max(A const &lhs, A const &rhs)
int restore_bps
Definition: DelaySpec.h:23
void stats(StoreEntry *) const
Definition: DelayBucket.cc:20
void update(DelaySpec const &, int incr)
Definition: DelayBucket.cc:26
DelayConfig Delay
Definition: SquidConfig.h:445
unsigned short initial
Definition: DelayConfig.h:28
int const & level() const
Definition: DelayBucket.h:24
const A & min(A const &lhs, A const &rhs)
int64_t max_bytes
Definition: DelaySpec.h:24
void bytesIn(int qty)
Definition: DelayBucket.cc:41
class SquidConfig Config
Definition: SquidConfig.cc:12
int unsigned int
Definition: stub_fd.cc:19

 

Introduction

Documentation

Support

Miscellaneous