Make filter parameters a part of the definition

The filter parameters are now a part of the filter definition.
This commit is contained in:
Markus Mäkelä 2019-03-26 13:32:33 +02:00
parent fd39291542
commit b180c346d9
No known key found for this signature in database
GPG Key ID: 72D48FCE664F7B19
2 changed files with 9 additions and 29 deletions

View File

@ -53,15 +53,6 @@ static struct
std::vector<SFilterDef> 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)
{

View File

@ -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<FilterDef> SFilterDef;