]> git.ipfire.org Git - thirdparty/squid.git/blob - src/mgr/QueryParams.h
5834648ee6e0998f445dcb3249f3b6fe912c302a
[thirdparty/squid.git] / src / mgr / QueryParams.h
1 /*
2 * Copyright (C) 1996-2023 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 16 Cache Manager API */
10
11 #ifndef SQUID_MGR_QUERY_PARAMS_H
12 #define SQUID_MGR_QUERY_PARAMS_H
13
14 #include "ipc/forward.h"
15 #include "mgr/QueryParam.h"
16 #include "parser/forward.h"
17 #include "SquidString.h"
18
19 #include <utility>
20 #include <vector>
21
22 namespace Mgr
23 {
24
25 class QueryParams
26 {
27 public:
28 typedef std::pair<String, QueryParam::Pointer> Param;
29 typedef std::vector<Param> Params;
30
31 public:
32 /// returns query parameter by name
33 QueryParam::Pointer get(const String& name) const;
34 void pack(Ipc::TypedMsgHdr& msg) const; ///< store params into msg
35 void unpack(const Ipc::TypedMsgHdr& msg); ///< load params from msg
36 /// parses the query string parameters
37 static void Parse(Parser::Tokenizer &, QueryParams &);
38
39 private:
40 /// find query parameter by name
41 Params::const_iterator find(const String& name) const;
42 /// creates a parameter of the specified type
43 static QueryParam::Pointer CreateParam(QueryParam::Type aType);
44
45 private:
46 Params params;
47 };
48
49 } // namespace Mgr
50
51 #endif /* SQUID_MGR_QUERY_PARAMS_H */
52