]> git.ipfire.org Git - thirdparty/squid.git/blame - src/acl/DestinationDomain.h
SourceFormat Enforcement
[thirdparty/squid.git] / src / acl / DestinationDomain.h
CommitLineData
3841dd46 1/*
bbc27441 2 * Copyright (C) 1996-2014 The Squid Software Foundation and contributors
3841dd46 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.
3841dd46 7 */
8
945c70bb
AR
9#ifndef SQUID_ACLDESTINATIONDOMAIN_H
10#define SQUID_ACLDESTINATIONDOMAIN_H
63be0a78 11
127dce76 12#include "acl/Acl.h"
127dce76 13#include "acl/Checklist.h"
602d9612 14#include "acl/Data.h"
127dce76 15#include "acl/Strategised.h"
7660b45d 16
63be0a78 17/// \ingroup ACLAPI
7660b45d 18class ACLDestinationDomainStrategy : public ACLStrategy<char const *>
19{
20
21public:
33810b1d 22 virtual int match (ACLData<MatchType> * &, ACLFilledChecklist *, ACLFlags &);
7660b45d 23 static ACLDestinationDomainStrategy *Instance();
51734f15 24 virtual bool requiresRequest() const {return true;}
26ac0430 25
63be0a78 26 /**
27 * Not implemented to prevent copies of the instance.
28 \par
29 * Not private to prevent brain dead g+++ warnings about
30 * private constructors with no friends
31 */
7660b45d 32 ACLDestinationDomainStrategy(ACLDestinationDomainStrategy const &);
33
34private:
35 static ACLDestinationDomainStrategy Instance_;
26ac0430 36 ACLDestinationDomainStrategy() {}
7660b45d 37
38 ACLDestinationDomainStrategy&operator=(ACLDestinationDomainStrategy const &);
39};
3841dd46 40
63be0a78 41/// \ingroup ACLAPI
62e76326 42class DestinationDomainLookup : public ACLChecklist::AsyncState
43{
44
45public:
3841dd46 46 static DestinationDomainLookup *Instance();
47 virtual void checkForAsync(ACLChecklist *)const;
62e76326 48
49private:
3841dd46 50 static DestinationDomainLookup instance_;
3ff65596 51 static void LookupDone(const char *, const DnsLookupDetails &, void *);
3841dd46 52};
53
63be0a78 54/// \ingroup ACLAPI
7660b45d 55class ACLDestinationDomain
62e76326 56{
57
62e76326 58private:
7660b45d 59 static ACL::Prototype LiteralRegistryProtoype;
60 static ACLStrategised<char const *> LiteralRegistryEntry_;
61 static ACL::Prototype RegexRegistryProtoype;
62 static ACLStrategised<char const *> RegexRegistryEntry_;
3841dd46 63};
64
945c70bb 65#endif /* SQUID_ACLDESTINATIONDOMAIN_H */
f53969cc 66