Make filter parameters a part of the definition
The filter parameters are now a part of the filter definition.
This commit is contained in:
@ -53,15 +53,6 @@ static struct
|
|||||||
std::vector<SFilterDef> filters;
|
std::vector<SFilterDef> filters;
|
||||||
} this_unit;
|
} 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
|
* Allocate a new filter
|
||||||
*
|
*
|
||||||
@ -111,19 +102,10 @@ FilterDef::FilterDef(std::string name,
|
|||||||
MXS_CONFIG_PARAMETER* params)
|
MXS_CONFIG_PARAMETER* params)
|
||||||
: name(name)
|
: name(name)
|
||||||
, module(module)
|
, module(module)
|
||||||
, parameters(NULL)
|
, parameters(*params)
|
||||||
, filter(instance)
|
, filter(instance)
|
||||||
, obj(object)
|
, 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()
|
FilterDef::~FilterDef()
|
||||||
@ -132,8 +114,6 @@ FilterDef::~FilterDef()
|
|||||||
{
|
{
|
||||||
obj->destroyInstance(filter);
|
obj->destroyInstance(filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
filter_free_parameters(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -378,7 +358,7 @@ json_t* filter_parameters_to_json(const SFilterDef& filter)
|
|||||||
|
|
||||||
/** Add custom module parameters */
|
/** Add custom module parameters */
|
||||||
const MXS_MODULE* mod = get_module(filter->module.c_str(), MODULE_FILTER);
|
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},
|
{CN_TYPE, CN_MODULE},
|
||||||
config_filter_params,
|
config_filter_params,
|
||||||
mod->parameters,
|
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);
|
const MXS_MODULE* mod = get_module(filter->module.c_str(), NULL);
|
||||||
mxb_assert(mod);
|
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);
|
config_filter_params, mod->parameters);
|
||||||
if (dprintf(file, "%s", config_str.c_str()) == -1)
|
if (dprintf(file, "%s", config_str.c_str()) == -1)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -38,7 +38,7 @@ struct FilterDef : public MXS_FILTER_DEF
|
|||||||
|
|
||||||
std::string name; /**< The Filter name */
|
std::string name; /**< The Filter name */
|
||||||
std::string module; /**< The module to load */
|
std::string module; /**< The module to load */
|
||||||
MXS_CONFIG_PARAMETER* parameters; /**< The filter parameters */
|
MXS_CONFIG_PARAMETER parameters; /**< The filter parameters */
|
||||||
MXS_FILTER* filter; /**< The runtime filter */
|
MXS_FILTER* filter; /**< The runtime filter */
|
||||||
MXS_FILTER_OBJECT* obj; /**< The "MODULE_OBJECT" for the filter */
|
MXS_FILTER_OBJECT* obj; /**< The "MODULE_OBJECT" for the filter */
|
||||||
mutable std::mutex lock;
|
mutable std::mutex lock;
|
||||||
|
|||||||
Reference in New Issue
Block a user