]> git.ipfire.org Git - thirdparty/squid.git/blame - src/MessageBucket.h
SourceFormat Enforcement
[thirdparty/squid.git] / src / MessageBucket.h
CommitLineData
b27668ec 1/*
f6e9a3ee 2 * Copyright (C) 1996-2019 The Squid Software Foundation and contributors
b27668ec
EB
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 MESSAGEBUCKET_H
10#define MESSAGEBUCKET_H
11
12#if USE_DELAY_POOLS
13
14#include "BandwidthBucket.h"
15#include "base/RefCount.h"
16#include "comm/forward.h"
17#include "MessageDelayPools.h"
18
19/// Limits Squid-to-client bandwidth for each matching response
20class MessageBucket : public RefCountable, public BandwidthBucket
21{
22 MEMPROXY_CLASS(MessageBucket);
23
24public:
25 typedef RefCount<MessageBucket> Pointer;
26
27 MessageBucket(const int speed, const int initialLevelPercent, const double sizeLimit, MessageDelayPool::Pointer pool);
28
29 /* BandwidthBucket API */
30 virtual int quota() override;
31 virtual void scheduleWrite(Comm::IoCallback *state) override;
3d452cb1 32 virtual void reduceBucket(int len) override;
b27668ec
EB
33
34private:
35 MessageDelayPool::Pointer theAggregate;
36};
37
38#endif /* USE_DELAY_POOLS */
39
40#endif
41