]>
Commit | Line | Data |
---|---|---|
5ec4cffe | 1 | /* |
f70aedc4 | 2 | * Copyright (C) 1996-2021 The Squid Software Foundation and contributors |
5ec4cffe 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 SQUID_ACLHASCOMPONENTDATA_H | |
10 | #define SQUID_ACLHASCOMPONENTDATA_H | |
11 | ||
12 | #include "acl/Checklist.h" | |
13 | #include "acl/Data.h" | |
14 | ||
15 | /// \ingroup ACLAPI | |
16 | class ACLHasComponentData : public ACLData<ACLChecklist *> | |
17 | { | |
18 | MEMPROXY_CLASS(ACLHasComponentData); | |
19 | ||
20 | public: | |
21 | ACLHasComponentData(); | |
22 | ||
23 | /* ACLData<M> API */ | |
24 | virtual bool match(ACLChecklist *) override; | |
25 | virtual SBufList dump() const override; | |
26 | virtual void parse() override; | |
27 | virtual bool empty() const override { return false; } | |
28 | virtual ACLData<ACLChecklist *> *clone() const override; | |
29 | ||
30 | private: | |
31 | enum ComponentKind { coRequest = 0, coResponse, coAle, coEnd }; | |
32 | void parseComponent(const char *token); | |
33 | ||
34 | static const SBuf RequestStr; | |
35 | static const SBuf ResponseStr; | |
36 | static const SBuf AleStr; | |
37 | ||
38 | typedef bool (ACLChecklist::*ComponentCheck)() const; | |
39 | /// component check callbacks, ordered by component kind ID | |
40 | std::vector<ComponentCheck> componentMethods; | |
41 | }; | |
42 | ||
43 | #endif | |
44 |