DelayTagged.cc
Go to the documentation of this file.
1/*
2 * Copyright (C) 1996-2022 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 "comm/Connection.h"
15#include "DelayTagged.h"
16#include "NullDelayId.h"
17#include "Store.h"
18
20{
22}
23
25
27{
29 buckets.destroy(DelayTaggedFree);
30}
31
33
34int
36{
37 /* for rate limiting, case insensitive */
38 return left->tag.caseCmp(right->tag);
39}
40
41void
43{}
44
49 current->stats(sentry);
50 }
51};
52
53void
55{
56 spec.stats (sentry, "Per Tag");
57
58 if (spec.restore_bps == -1)
59 return;
60
61 storeAppendPrintf(sentry, "\t\tCurrent: ");
62
63 if (buckets.empty()) {
64 storeAppendPrintf (sentry, "Not used yet.\n\n");
65 return;
66 }
67
68 DelayTaggedStatsVisitor visitor(sentry);
69 buckets.visit(visitor);
70 storeAppendPrintf(sentry, "\n\n");
71}
72
73void
75{
76 spec.dump(entry);
77}
78
80 DelayTaggedUpdater (DelaySpec &_spec, int _incr):spec(_spec),incr(_incr) {};
81
83 int incr;
84};
85
90 const_cast<DelayTaggedBucket *>(current.getRaw())->theBucket.update(updater->spec, updater->incr);
91 }
92};
93
94void
96{
97 DelayTaggedUpdater updater(spec, incr);
98 DelayTaggedUpdateVisitor visitor(&updater);
99 buckets.visit(visitor);
100 kickReads();
101}
102
103void
105{
106 spec.parse();
107}
108
110
112{
113 if (!details.tag.size())
114 return new NullDelayId;
115
116 return new Id(this, details.tag);
117}
118
120{
121 debugs(77, 3, "DelayTaggedBucket::DelayTaggedBucket");
122}
123
125{
126 debugs(77, 3, "DelayTaggedBucket::~DelayTaggedBucket");
127}
128
129void
131{
133 theBucket.stats(entry);
134}
135
136DelayTagged::Id::Id(DelayTagged::Pointer aDelayTagged, String &aTag) : theTagged(aDelayTagged)
137{
138 theBucket = new DelayTaggedBucket(aTag);
140
141 if (existing) {
142 theBucket = *existing;
143 return;
144 }
145
148}
149
151{
152 debugs(77, 3, "DelayTagged::Id::~Id");
153}
154
155int
157{
158 return theBucket->theBucket.bytesWanted(min,max);
159}
160
161void
163{
164 theBucket->theBucket.bytesIn(qty);
165}
166
167void
169{
170 theTagged->delayRead(aRead);
171}
172
173#endif
174
static Splay< DelayTaggedBucket::Pointer >::SPLAYCMP DelayTaggedCmp
Definition: DelayTagged.cc:32
static Splay< DelayTaggedBucket::Pointer >::SPLAYFREE DelayTaggedFree
Definition: DelayTagged.cc:24
#define SQUIDSTRINGPH
Definition: SquidString.h:21
#define SQUIDSTRINGPRINT(s)
Definition: SquidString.h:22
void init(DelaySpec const &)
Definition: DelayBucket.cc:47
void stats(StoreEntry *) const
Definition: DelayBucket.cc:20
static void deregisterForUpdates(Updateable *)
Definition: delay_pools.cc:515
static void registerForUpdates(Updateable *)
Definition: delay_pools.cc:508
int restore_bps
Definition: DelaySpec.h:23
void parse()
Definition: DelaySpec.cc:42
void dump(StoreEntry *) const
Definition: DelaySpec.cc:36
void stats(StoreEntry *sentry, char const *) const
Definition: DelaySpec.cc:23
DelayBucket theBucket
Definition: DelayTagged.h:35
void stats(StoreEntry *) const
Definition: DelayTagged.cc:130
DelayTaggedBucket(String &aTag)
Definition: DelayTagged.cc:119
Id(RefCount< DelayTagged >, String &)
Definition: DelayTagged.cc:136
DelayTaggedBucket::Pointer theBucket
Definition: DelayTagged.h:72
virtual void delayRead(const AsyncCallPointer &)
Definition: DelayTagged.cc:168
virtual void bytesIn(int qty)
Definition: DelayTagged.cc:162
virtual int bytesWanted(int min, int max) const
Definition: DelayTagged.cc:156
RefCount< DelayTagged > theTagged
Definition: DelayTagged.h:71
virtual void update(int incr)
Definition: DelayTagged.cc:95
Splay< DelayTaggedBucket::Pointer > buckets
Definition: DelayTagged.h:78
virtual void stats(StoreEntry *sentry)
Definition: DelayTagged.cc:54
friend class Id
Definition: DelayTagged.h:75
virtual DelayIdComposite::Pointer id(CompositeSelectionDetails &)
Definition: DelayTagged.cc:111
virtual ~DelayTagged()
Definition: DelayTagged.cc:26
virtual void parse()
Definition: DelayTagged.cc:104
virtual void dump(StoreEntry *entry) const
Definition: DelayTagged.cc:74
DelaySpec spec
Definition: DelayTagged.h:77
C * getRaw() const
Definition: RefCount.h:80
Definition: splay.h:57
int caseCmp(char const *) const
Definition: String.cc:285
size_type size() const
Definition: SquidString.h:73
A const & max(A const &lhs, A const &rhs)
A const & min(A const &lhs, A const &rhs)
#define debugs(SECTION, LEVEL, CONTENT)
Definition: Stream.h:196
void storeAppendPrintf(StoreEntry *e, const char *fmt,...)
Definition: store.cc:828
DelayTaggedStatsVisitor(StoreEntry *se)
Definition: DelayTagged.cc:47
void operator()(DelayTaggedBucket::Pointer const &current)
Definition: DelayTagged.cc:48
void operator()(DelayTaggedBucket::Pointer const &current)
Definition: DelayTagged.cc:89
DelayTaggedUpdateVisitor(DelayTaggedUpdater *u)
Definition: DelayTagged.cc:88
DelayTaggedUpdater * updater
Definition: DelayTagged.cc:87
DelayTaggedUpdater(DelaySpec &_spec, int _incr)
Definition: DelayTagged.cc:80

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors