+/*
+ * Copyright (C) 1996-2021 The Squid Software Foundation and contributors
+ *
+ * Squid software is distributed under GPLv2+ license and includes
+ * contributions from numerous individuals and organizations.
+ * Please see the COPYING and CONTRIBUTORS files for details.
+ */
+
#ifndef SQUID_ADAPTATION__SERVICE_CONFIG_H
#define SQUID_ADAPTATION__SERVICE_CONFIG_H
-#include "SquidString.h"
-#include "RefCount.h"
#include "adaptation/Elements.h"
+#include "base/RefCount.h"
+#include "base/YesNoNone.h"
+#include "security/PeerOptions.h"
+#include "SquidString.h"
-namespace Adaptation {
+namespace Adaptation
+{
// manages adaptation service configuration in squid.conf
-class ServiceConfig
+class ServiceConfig: public RefCountable
{
public:
ServiceConfig();
VectPoint point; // where the adaptation happens (pre- or post-cache)
bool bypass;
+ // options
+ long maxConn; ///< maximum number of concurrent service transactions
+ SrvBehaviour onOverload; ///< how to handle Max-Connections feature
+ bool routing; ///< whether this service may determine the next service(s)
+ bool ipv6; ///< whether this service uses IPv6 transport (default IPv4)
+
+ // security settings for adaptation service
+ Security::PeerOptions secure;
+ YesNoNone connectionEncryption; ///< whether this service uses only secure connections
+
protected:
Method parseMethod(const char *buf) const;
VectPoint parseVectPoint(const char *buf) const;
+
+ /// interpret parsed values
+ bool grokBool(bool &var, const char *name, const char *value);
+ bool grokUri(const char *value);
+ bool grokLong(long &var, const char *name, const char *value);
+ /// handle on-overload configuration option
+ bool grokOnOverload(SrvBehaviour &var, const char *value);
+ /// handle name=value configuration option with name unknown to Squid
+ virtual bool grokExtension(const char *name, const char *value);
};
} // namespace Adaptation
#endif /* SQUID_ADAPTATION__SERVICE_CONFIG_H */
+