]> git.ipfire.org Git - thirdparty/squid.git/blob - src/adaptation/ecap/Host.h
0c3bc275d3c7bed2a4101f875da7fdce18b6cd52
[thirdparty/squid.git] / src / adaptation / ecap / Host.h
1 /*
2 * Copyright (C) 1996-2022 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 /* DEBUG: section 93 eCAP Interface */
10
11 #ifndef SQUID_ECAP_HOST_H
12 #define SQUID_ECAP_HOST_H
13
14 #include <libecap/host/host.h>
15
16 namespace Adaptation
17 {
18 namespace Ecap
19 {
20
21 // Squid wrapper, providing host application functionality to eCAP services.
22 class Host : public libecap::host::Host
23 {
24 public:
25 /* libecap::host::Host API */
26 std::string uri() const override; // unique across all vendors
27 void describe(std::ostream &os) const override; // free-format info
28 void noteVersionedService(const char *libEcapVersion, const libecap::weak_ptr<libecap::adapter::Service> &s) override;
29 std::ostream *openDebug(libecap::LogVerbosity lv) override;
30 void closeDebug(std::ostream *debug) override;
31 typedef libecap::shared_ptr<libecap::Message> MessagePtr;
32 MessagePtr newRequest() const override;
33 MessagePtr newResponse() const override;
34
35 static void Register(); ///< register adaptation host
36
37 private:
38 Host();
39 Host (const Host&); ///< not implemented
40 Host& operator= (const Host&); ///< not implemented
41 };
42
43 extern const libecap::Name protocolInternal;
44 extern const libecap::Name protocolCacheObj;
45 extern const libecap::Name protocolIcp;
46 extern const libecap::Name protocolIcy;
47 extern const libecap::Name protocolUnknown;
48 #if USE_HTCP
49 extern const libecap::Name protocolHtcp;
50 #endif
51 extern const libecap::Name metaBypassable; ///< an ecap_service parameter
52
53 } // namespace Ecap
54 } // namespace Adaptation
55
56 #endif /* SQUID_ECAP_HOST_H */
57