]> git.ipfire.org Git - thirdparty/squid.git/blob - src/DelayVector.h
Boilerplate: update copyright blurbs on src/
[thirdparty/squid.git] / src / DelayVector.h
1 /*
2 * Copyright (C) 1996-2014 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_DELAYVECTOR_H
10 #define SQUID_DELAYVECTOR_H
11
12 #if USE_DELAY_POOLS
13
14 #include "CompositePoolNode.h"
15
16 /// \ingroup DelayPoolsAPI
17 class DelayVector : public CompositePoolNode
18 {
19
20 public:
21 typedef RefCount<DelayVector> Pointer;
22 void *operator new(size_t);
23 void operator delete (void *);
24 DelayVector();
25 virtual ~DelayVector();
26 virtual void stats(StoreEntry * sentry);
27 virtual void dump(StoreEntry *entry) const;
28 virtual void update(int incr);
29 virtual void parse();
30
31 virtual DelayIdComposite::Pointer id(CompositeSelectionDetails &);
32 void push_back (CompositePoolNode::Pointer);
33
34 private:
35
36 /// \ingroup DelayPoolsInternal
37 class Id:public DelayIdComposite
38 {
39
40 public:
41 void *operator new(size_t);
42 void operator delete (void *);
43
44 Id (RefCount<DelayVector>,CompositeSelectionDetails &);
45 ~Id();
46 virtual int bytesWanted (int min, int max) const;
47 virtual void bytesIn(int qty);
48 virtual void delayRead(DeferredRead const &);
49
50 private:
51 RefCount<DelayVector> theVector;
52 std::vector<DelayIdComposite::Pointer> ids;
53 typedef std::vector<DelayIdComposite::Pointer>::iterator iterator;
54 typedef std::vector<DelayIdComposite::Pointer>::const_iterator const_iterator;
55 };
56
57 friend class Id;
58
59 std::vector<CompositePoolNode::Pointer> pools;
60 typedef std::vector<CompositePoolNode::Pointer>::iterator iterator;
61 typedef std::vector<CompositePoolNode::Pointer>::const_iterator const_iterator;
62 };
63
64 #endif /* USE_DELAY_POOLS */
65 #endif /* SQUID_DELAYVECTOR_H */