1 #ifndef SQUID_ADAPTATION__ACCESS_CHECK_H
2 #define SQUID_ADAPTATION__ACCESS_CHECK_H
4 #include "base/AsyncJob.h"
5 #include "adaptation/Elements.h"
6 #include "adaptation/forward.h"
16 // checks adaptation_access rules to find a matching adaptation service
17 class AccessCheck
: public virtual AsyncJob
20 typedef void AccessCheckCallback(ServicePointer match
, void *data
);
22 // use this to start async ACL checks; returns true if started
23 static bool Start(Method method
, VectPoint vp
, HttpRequest
*req
,
24 HttpReply
*rep
, AccessCheckCallback
*cb
, void *cbdata
);
27 // use Start to start adaptation checks
28 AccessCheck(Method
, VectPoint
, HttpRequest
*, HttpReply
*, AccessCheckCallback
*, void *);
36 AccessCheckCallback
*callback
;
38 ACLChecklist
*acl_checklist
;
40 typedef int Candidate
;
41 typedef Vector
<Candidate
> Candidates
;
42 Candidates candidates
;
43 Candidate
topCandidate() { return *candidates
.begin(); }
46 ServicePointer
findBestService(AccessRule
&r
, bool preferUp
);
51 void checkCandidates();
52 static void AccessCheckCallbackWrapper(int, void*);
54 static EVH AccessCheckCallbackEvent
;
56 void noteAnswer(int answer
);
58 //AsyncJob virtual methods
59 virtual bool doneAll() const { return AsyncJob::doneAll() && done
;}
62 CBDATA_CLASS2(AccessCheck
);
65 } // namespace Adaptation
67 #endif /* SQUID_ADAPTATION__ACCESS_CHECK_H */