]> git.ipfire.org Git - thirdparty/squid.git/blame - src/RemovalPolicy.h
SourceFormat Enforcement
[thirdparty/squid.git] / src / RemovalPolicy.h
CommitLineData
aa839030 1/*
bde978a6 2 * Copyright (C) 1996-2015 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;
16
17class RemovalPolicySettings
18{
19
20public:
21 RemovalPolicySettings() : type(NULL), args(NULL) {};
22
23 char *type;
24 wordlist *args;
25};
26
27class RemovalPolicyNode
28{
29
30public:
31 RemovalPolicyNode() : data(NULL) {}
32
33 void *data;
34};
35
36class RemovalPolicy
37{
5c2f68b7
AJ
38 CBDATA_CLASS(RemovalPolicy);
39
26ac0430 40public:
aa839030 41 const char *_type;
42 void *_data;
43 void (*Free) (RemovalPolicy * policy);
44 void (*Add) (RemovalPolicy * policy, StoreEntry * entry, RemovalPolicyNode * node);
45 void (*Remove) (RemovalPolicy * policy, StoreEntry * entry, RemovalPolicyNode * node);
46 void (*Referenced) (RemovalPolicy * policy, const StoreEntry * entry, RemovalPolicyNode * node);
47 void (*Dereferenced) (RemovalPolicy * policy, const StoreEntry * entry, RemovalPolicyNode * node);
48 RemovalPolicyWalker *(*WalkInit) (RemovalPolicy * policy);
49 RemovalPurgeWalker *(*PurgeInit) (RemovalPolicy * policy, int max_scan);
50 void (*Stats) (RemovalPolicy * policy, StoreEntry * entry);
aa839030 51};
52
53class RemovalPolicyWalker
54{
5c2f68b7
AJ
55 CBDATA_CLASS(RemovalPolicyWalker);
56
26ac0430 57public:
aa839030 58 RemovalPolicy *_policy;
59 void *_data;
60 const StoreEntry *(*Next) (RemovalPolicyWalker * walker);
61 void (*Done) (RemovalPolicyWalker * walker);
aa839030 62};
63
64class RemovalPurgeWalker
65{
5c2f68b7
AJ
66 CBDATA_CLASS(RemovalPurgeWalker);
67
26ac0430 68public:
aa839030 69 RemovalPolicy *_policy;
70 void *_data;
71 int scanned, max_scan, locked;
72 StoreEntry *(*Next) (RemovalPurgeWalker * walker);
73 void (*Done) (RemovalPurgeWalker * walker);
aa839030 74};
75
8a648e8d 76RemovalPolicy *createRemovalPolicy(RemovalPolicySettings * settings);
aa839030 77
78typedef RemovalPolicy *REMOVALPOLICYCREATE(wordlist * args);
79
aa839030 80#endif /* SQUID_REMOVALPOLICY_H */
f53969cc 81