ClientDelayConfig.h
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#ifndef SQUID_CLIENTDELAYCONFIG_H
10#define SQUID_CLIENTDELAYCONFIG_H
11
12#include "acl/forward.h"
13#include "base/RefCount.h"
14
15#include <vector>
16
17class StoreEntry;
18class ConfigParser;
19
21
22/* represents one client write limiting delay 'pool' */
24{
25public:
27
29 : access(nullptr), rate(0), highwatermark(0) {}
30 ~ClientDelayPool() override;
33
34 void dump (StoreEntry * entry, unsigned int poolNumberMinusOne) const;
36 int rate;
38};
39
41{
42public:
45 static ClientDelayPools *Instance();
46
47 std::vector<ClientDelayPool::Pointer> pools;
48private:
51};
52
53/* represents configuration of client write limiting delay pools */
55{
56public:
58 : initial(50) {}
61
62 void freePools();
63 void dumpPoolCount(StoreEntry * entry, const char *name) const;
64 /* parsing of client_delay_pools - number of pools */
65 void parsePoolCount();
66 /* parsing of client_delay_parameters lines */
67 void parsePoolRates();
68 /* parsing client_delay_access lines */
69 void parsePoolAccess(ConfigParser &parser);
70
71 void finalize();
72
73 /* initial bucket level, how fill bucket at startup */
74 unsigned short initial;
75
76private:
77 unsigned short parsePoolId();
78 std::vector<ClientDelayPool::Pointer> &pools() { return ClientDelayPools::Instance()->pools; }
79 ClientDelayPool &pool(const int i) { return *(ClientDelayPools::Instance()->pools.at(i)); }
80};
81
82#endif // SQUID_CLIENTDELAYCONFIG_H
83
#define RefCountable
The locking interface for use on Reference-Counted classes.
Definition: Lock.h:66
#define acl_access
Definition: forward.h:45
unsigned short initial
unsigned short parsePoolId()
std::vector< ClientDelayPool::Pointer > & pools()
void finalize()
checks pools configuration
void parsePoolAccess(ConfigParser &parser)
ClientDelayConfig(const ClientDelayConfig &)=delete
void dumpPoolCount(StoreEntry *entry, const char *name) const
ClientDelayConfig & operator=(const ClientDelayConfig &)=delete
ClientDelayPool & pool(const int i)
~ClientDelayPool() override
ClientDelayPool(const ClientDelayPool &)=delete
void dump(StoreEntry *entry, unsigned int poolNumberMinusOne) const
acl_access * access
ClientDelayPool & operator=(const ClientDelayPool &)=delete
RefCount< ClientDelayPool > Pointer
ClientDelayPools(const ClientDelayPools &)=delete
std::vector< ClientDelayPool::Pointer > pools
static ClientDelayPools * Instance()
ClientDelayPools & operator=(const ClientDelayPools &)=delete

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors