]> git.ipfire.org Git - thirdparty/squid.git/blame - src/RemovalPolicy.h
SourceFormat Enforcement
[thirdparty/squid.git] / src / RemovalPolicy.h
CommitLineData
aa839030 1/*
2cd0bda2 2 * Copyright (C) 1996-2017 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
9#ifndef SQUID_REMOVALPOLICY_H
10#define SQUID_REMOVALPOLICY_H
11
aa839030 12#include "cbdata.h"
13
14class RemovalPolicyWalker;
15class RemovalPurgeWalker;
541b581e 16class wordlist;
e1ba42a4 17class StoreEntry;
aa839030 18
19class RemovalPolicySettings
20{
21
22public:
23 RemovalPolicySettings() : type(NULL), args(NULL) {};
24
25 char *type;
26 wordlist *args;
27};
28
29class RemovalPolicyNode
30{
31
32public:
33 RemovalPolicyNode() : data(NULL) {}
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
aa839030 82#endif /* SQUID_REMOVALPOLICY_H */
f53969cc 83