MXS-2304 Add ctor/dtor and other functions to parameter class
The manipulation functions are currently static so that the container can be initialized if required. This will be fixed later. The new functions are taken into use in monitor management.
This commit is contained in:
@ -222,9 +222,9 @@ bool Monitor::configure_base(const MXS_CONFIG_PARAMETER* params)
|
||||
if (!error)
|
||||
{
|
||||
// Store module name into parameter storage.
|
||||
monitor_set_parameter(this, CN_MODULE, m_module.c_str());
|
||||
MXS_CONFIG_PARAMETER::set(¶meters, CN_MODULE, m_module);
|
||||
// Add all config settings to text-mode storage. Needed for serialization.
|
||||
monitor_add_parameters(this, params);
|
||||
MXS_CONFIG_PARAMETER::set_multiple(¶meters, params);
|
||||
}
|
||||
return !error;
|
||||
}
|
||||
@ -769,60 +769,6 @@ void monitor_add_parameters(Monitor* monitor, const MXS_CONFIG_PARAMETER* params
|
||||
}
|
||||
}
|
||||
|
||||
void monitor_set_parameter(Monitor* monitor, const char* key, const char* value)
|
||||
{
|
||||
monitor_remove_parameter(monitor, key);
|
||||
MXS_CONFIG_PARAMETER p = {};
|
||||
p.name = const_cast<char*>(key);
|
||||
p.value = const_cast<char*>(value);
|
||||
monitor_add_parameters(monitor, &p);
|
||||
}
|
||||
|
||||
bool monitor_remove_parameter(Monitor* monitor, const char* key)
|
||||
{
|
||||
MXS_CONFIG_PARAMETER* prev = NULL;
|
||||
bool rval = false;
|
||||
Guard guard(monitor->m_lock);
|
||||
|
||||
for (MXS_CONFIG_PARAMETER* p = monitor->parameters; p; p = p->next)
|
||||
{
|
||||
if (strcmp(p->name, key) == 0)
|
||||
{
|
||||
if (p == monitor->parameters)
|
||||
{
|
||||
monitor->parameters = monitor->parameters->next;
|
||||
}
|
||||
else
|
||||
{
|
||||
prev->next = p->next;
|
||||
}
|
||||
|
||||
p->next = NULL;
|
||||
config_parameter_free(p);
|
||||
rval = true;
|
||||
break;
|
||||
}
|
||||
|
||||
prev = p;
|
||||
}
|
||||
|
||||
return rval;
|
||||
}
|
||||
|
||||
void mon_alter_parameter(Monitor* monitor, const char* key, const char* value)
|
||||
{
|
||||
Guard guard(monitor->m_lock);
|
||||
for (MXS_CONFIG_PARAMETER* p = monitor->parameters; p; p = p->next)
|
||||
{
|
||||
if (strcmp(p->name, key) == 0)
|
||||
{
|
||||
MXS_FREE(p->value);
|
||||
p->value = MXS_STRDUP_A(value);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void monitor_stash_current_status(MXS_MONITORED_SERVER* ptr)
|
||||
{
|
||||
ptr->mon_prev_status = ptr->server->status;
|
||||
|
||||
Reference in New Issue
Block a user