From b180c346d97b48dc2b6481e999bdbc934d2955d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Tue, 26 Mar 2019 13:32:33 +0200 Subject: [PATCH] Make filter parameters a part of the definition The filter parameters are now a part of the filter definition. --- server/core/filter.cc | 26 +++----------------------- server/core/internal/filter.hh | 12 ++++++------ 2 files changed, 9 insertions(+), 29 deletions(-) diff --git a/server/core/filter.cc b/server/core/filter.cc index e394c7582..e288339c9 100644 --- a/server/core/filter.cc +++ b/server/core/filter.cc @@ -53,15 +53,6 @@ static struct std::vector filters; } this_unit; -/** - * Free filter parameters - * @param filter FilterDef whose parameters are to be freed - */ -static void filter_free_parameters(FilterDef* filter) -{ - delete filter->parameters; -} - /** * Allocate a new filter * @@ -111,19 +102,10 @@ FilterDef::FilterDef(std::string name, MXS_CONFIG_PARAMETER* params) : name(name) , module(module) - , parameters(NULL) + , parameters(*params) , filter(instance) , obj(object) { - // TODO: Add config_clone_param_chain - parameters = new MXS_CONFIG_PARAMETER; - for (auto p : *params) - { - parameters->set(p.first, p.second); - } - - // Store module, used when the filter is serialized - parameters->set(CN_MODULE, module); } FilterDef::~FilterDef() @@ -132,8 +114,6 @@ FilterDef::~FilterDef() { obj->destroyInstance(filter); } - - filter_free_parameters(this); } /** @@ -378,7 +358,7 @@ json_t* filter_parameters_to_json(const SFilterDef& filter) /** Add custom module parameters */ const MXS_MODULE* mod = get_module(filter->module.c_str(), MODULE_FILTER); - config_add_module_params_json(filter->parameters, + config_add_module_params_json(&filter->parameters, {CN_TYPE, CN_MODULE}, config_filter_params, mod->parameters, @@ -517,7 +497,7 @@ static bool create_filter_config(const SFilterDef& filter, const char* filename) const MXS_MODULE* mod = get_module(filter->module.c_str(), NULL); mxb_assert(mod); - string config_str = generate_config_string(filter->name, *filter->parameters, + string config_str = generate_config_string(filter->name, filter->parameters, config_filter_params, mod->parameters); if (dprintf(file, "%s", config_str.c_str()) == -1) { diff --git a/server/core/internal/filter.hh b/server/core/internal/filter.hh index d313d9e41..e276c7859 100644 --- a/server/core/internal/filter.hh +++ b/server/core/internal/filter.hh @@ -36,12 +36,12 @@ struct FilterDef : public MXS_FILTER_DEF MXS_CONFIG_PARAMETER* params); ~FilterDef(); - std::string name; /**< The Filter name */ - std::string module; /**< The module to load */ - MXS_CONFIG_PARAMETER* parameters; /**< The filter parameters */ - MXS_FILTER* filter; /**< The runtime filter */ - MXS_FILTER_OBJECT* obj; /**< The "MODULE_OBJECT" for the filter */ - mutable std::mutex lock; + std::string name; /**< The Filter name */ + std::string module; /**< The module to load */ + MXS_CONFIG_PARAMETER parameters; /**< The filter parameters */ + MXS_FILTER* filter; /**< The runtime filter */ + MXS_FILTER_OBJECT* obj; /**< The "MODULE_OBJECT" for the filter */ + mutable std::mutex lock; }; typedef std::shared_ptr SFilterDef;