blob: 4bec9a6aff6d1a1da6ff5c633ce6a5c07f6de877 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
// Copyright (C) 2017 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
#ifndef HOOKS_PARSER_H
#define HOOKS_PARSER_H
#include <cc/data.h>
#include <cc/simple_parser.h>
#include <hooks/hooks_config.h>
namespace isc {
namespace hooks {
/// @brief Parser for hooks library list
///
/// This parser handles the list of hooks libraries. This is an optional list,
/// which may be empty, and is encapsulated into a @ref HooksConfig object.
class HooksLibrariesParser : public isc::data::SimpleParser {
public:
/// @brief Parses parameters value
///
/// Parses configuration entry (list of parameters) and adds each element
/// to the hooks libraries list. The method also checks whether the
/// list of libraries is the same as that already loaded. If not, it
/// checks each of the libraries in the list for validity (they exist and
/// have a "version" function that returns the correct value).
///
/// The syntax for specifying hooks libraries allow for library-specific
/// parameters to be specified along with the library, e.g.
///
/// @code
/// "hooks-libraries": [
/// {
/// "library": "hook-lib-1.so",
/// "parameters": {
/// "alpha": "a string",
/// "beta": 42
/// }
/// },
/// :
/// ]
/// @endcode
///
/// The parsing code only checks that:
///
/// -# Each element in the hooks-libraries list is a map
/// -# The map contains an element "library" whose value is a not blank string
/// -# That there is an optional 'parameters' element.
/// -# That there are no other element.
///
/// This method stores parsed libraries in libraries.
///
/// @param libraries parsed libraries information will be stored here
/// @param value pointer to the content to be parsed
void parse(HooksConfig& libraries, isc::data::ConstElementPtr value);
};
}; // namespace isc::hooks
}; // namespace isc
#endif
|