]> git.ipfire.org Git - thirdparty/squid.git/blame - src/RemovalPolicy.h
Bug 5428: Warn if pkg-config is not found (#1902)
[thirdparty/squid.git] / src / RemovalPolicy.h
CommitLineData
aa839030 1/*
b8ae064d 2 * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
aa839030 3 *
bbc27441
AJ
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.
aa839030 7 */
8
ff9d9458
FC
9#ifndef SQUID_SRC_REMOVALPOLICY_H
10#define SQUID_SRC_REMOVALPOLICY_H
aa839030 11
aa839030 12#include "cbdata.h"
13
14class RemovalPolicyWalker;
15class RemovalPurgeWalker;
541b581e 16class wordlist;
e1ba42a4 17class StoreEntry;
aa839030 18
19class RemovalPolicySettings
20{
21
22public:
aee3523a 23 RemovalPolicySettings() : type(nullptr), args(nullptr) {};
aa839030 24
25 char *type;
26 wordlist *args;
27};
28
29class RemovalPolicyNode
30{
31
32public:
aee3523a 33 RemovalPolicyNode() : data(nullptr) {}
aa839030 34
35 void *data;
36};
37
38class RemovalPolicy
39{
5c2f68b7
AJ
40 CBDATA_CLASS(RemovalPolicy);
41
26ac0430 42public:
aa839030 43 const char *_type;
44 void *_data;
45 void (*Free) (RemovalPolicy * policy);
46 void (*Add) (RemovalPolicy * policy, StoreEntry * entry, RemovalPolicyNode * node);
47 void (*Remove) (RemovalPolicy * policy, StoreEntry * entry, RemovalPolicyNode * node);
48 void (*Referenced) (RemovalPolicy * policy, const StoreEntry * entry, RemovalPolicyNode * node);
49 void (*Dereferenced) (RemovalPolicy * policy, const StoreEntry * entry, RemovalPolicyNode * node);
50 RemovalPolicyWalker *(*WalkInit) (RemovalPolicy * policy);
51 RemovalPurgeWalker *(*PurgeInit) (RemovalPolicy * policy, int max_scan);
52 void (*Stats) (RemovalPolicy * policy, StoreEntry * entry);
aa839030 53};
54
55class RemovalPolicyWalker
56{
5c2f68b7
AJ
57 CBDATA_CLASS(RemovalPolicyWalker);
58
26ac0430 59public:
aa839030 60 RemovalPolicy *_policy;
61 void *_data;
62 const StoreEntry *(*Next) (RemovalPolicyWalker * walker);
63 void (*Done) (RemovalPolicyWalker * walker);
aa839030 64};
65
66class RemovalPurgeWalker
67{
5c2f68b7
AJ
68 CBDATA_CLASS(RemovalPurgeWalker);
69
26ac0430 70public:
aa839030 71 RemovalPolicy *_policy;
72 void *_data;
73 int scanned, max_scan, locked;
74 StoreEntry *(*Next) (RemovalPurgeWalker * walker);
75 void (*Done) (RemovalPurgeWalker * walker);
aa839030 76};
77
8a648e8d 78RemovalPolicy *createRemovalPolicy(RemovalPolicySettings * settings);
aa839030 79
80typedef RemovalPolicy *REMOVALPOLICYCREATE(wordlist * args);
81
ff9d9458 82#endif /* SQUID_SRC_REMOVALPOLICY_H */
f53969cc 83