]> git.ipfire.org Git - thirdparty/squid.git/blob - src/CompositePoolNode.h
Docs: Copyright updates for 2018 (#114)
[thirdparty/squid.git] / src / CompositePoolNode.h
1 /*
2 * Copyright (C) 1996-2018 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 #ifndef COMPOSITEPOOLNODE_H
12 #define COMPOSITEPOOLNODE_H
13
14 #if USE_DELAY_POOLS
15 #include "auth/UserRequest.h"
16 #include "CommRead.h"
17 #include "DelayIdComposite.h"
18 #include "DelayPools.h"
19 #include "ip/Address.h"
20 #include "SquidString.h"
21
22 class StoreEntry;
23
24 /// \ingroup DelayPoolsAPI
25 class CompositePoolNode : public RefCountable, public Updateable
26 {
27 MEMPROXY_CLASS(CompositePoolNode);
28
29 public:
30 typedef RefCount<CompositePoolNode> Pointer;
31 virtual ~CompositePoolNode() {}
32
33 virtual void stats(StoreEntry * sentry) =0;
34 virtual void dump(StoreEntry *entry) const =0;
35 virtual void update(int incr) =0;
36 virtual void parse() = 0;
37
38 class CompositeSelectionDetails;
39 virtual DelayIdComposite::Pointer id(CompositeSelectionDetails &) = 0;
40 void delayRead(DeferredRead const &);
41
42 /// \ingroup DelayPoolsAPI
43 class CompositeSelectionDetails
44 {
45
46 public:
47 CompositeSelectionDetails() {}
48
49 Ip::Address src_addr;
50 #if USE_AUTH
51 Auth::UserRequest::Pointer user;
52 #endif
53 String tag;
54 };
55
56 protected:
57 void kickReads();
58 DeferredReadManager deferredReads;
59 };
60
61 #endif /* USE_DELAY_POOLS */
62 #endif /* COMPOSITEPOOLNODE_H */
63