]> git.ipfire.org Git - thirdparty/squid.git/blob - src/XactionInitiator.cc
SourceFormat Enforcement
[thirdparty/squid.git] / src / XactionInitiator.cc
1 /*
2 * Copyright (C) 1996-2017 The Squid Software Foundation and contributors
3 *
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.
7 */
8
9 #include "squid.h"
10 #include "cache_cf.h"
11 #include "Debug.h"
12 #include "XactionInitiator.h"
13
14 XactionInitiator::Initiators
15 XactionInitiator::ParseInitiators(const char *name)
16 {
17 typedef std::map<std::string, XactionInitiator::Initiators> InitiatorsMap;
18 static InitiatorsMap SupportedInitiators = {
19 {"client", initClient},
20 {"peer-pool", initPeerPool},
21 {"certificate-fetching", initCertFetcher},
22 {"esi", initEsi},
23 {"cache-digest", initCacheDigest},
24 {"server", initServer},
25 {"htcp", initHtcp},
26 {"icp", initIcp},
27 {"icmp", initIcmp},
28 {"asn", initAsn},
29 {"ipc", initIpc},
30 {"adaptation", initAdaptation},
31 {"icon", initIcon},
32 {"peer-mcast", initPeerMcast},
33 {"internal", InternalInitiators()},
34 {"all", AllInitiators()}
35 };
36 const auto it = SupportedInitiators.find(name);
37 if (it != SupportedInitiators.cend())
38 return it->second;
39
40 debugs(28, DBG_CRITICAL, "FATAL: Invalid transaction_initiator value near " << name);
41 self_destruct();
42 return 0;
43 }
44