Add monitor alteration to config_runtime.h
Moved the monitor alteration to config_runtime.c.
This commit is contained in:
@ -258,3 +258,80 @@ bool runtime_alter_server(SERVER *server, char *key, char *value)
|
||||
spinlock_release(&crt_lock);
|
||||
return valid;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Convert a string value to a positive integer
|
||||
*
|
||||
* If the value is not a positive integer, an error is printed to @c dcb.
|
||||
*
|
||||
* @param value String value
|
||||
* @return 0 on error, otherwise a positive integer
|
||||
*/
|
||||
static long get_positive_int(const char *value)
|
||||
{
|
||||
char *endptr;
|
||||
long ival = strtol(value, &endptr, 10);
|
||||
|
||||
if (*endptr == '\0' && ival > 0)
|
||||
{
|
||||
return ival;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool runtime_alter_monitor(MONITOR *monitor, char *key, char *value)
|
||||
{
|
||||
spinlock_acquire(&crt_lock);
|
||||
bool valid = false;
|
||||
|
||||
if (strcmp(key, "user") == 0)
|
||||
{
|
||||
valid = true;
|
||||
monitorAddUser(monitor, value, monitor->password);
|
||||
}
|
||||
else if (strcmp(key, "password") == 0)
|
||||
{
|
||||
valid = true;
|
||||
monitorAddUser(monitor, monitor->user, value);
|
||||
}
|
||||
else if (strcmp(key, "monitor_interval") == 0)
|
||||
{
|
||||
long ival = get_positive_int(value);
|
||||
if (ival)
|
||||
{
|
||||
valid = true;
|
||||
monitorSetInterval(monitor, ival);
|
||||
}
|
||||
}
|
||||
else if (strcmp(key, "backend_connect_timeout") == 0)
|
||||
{
|
||||
long ival = get_positive_int(value);
|
||||
if (ival)
|
||||
{
|
||||
valid = true;
|
||||
monitorSetNetworkTimeout(monitor, MONITOR_CONNECT_TIMEOUT, ival);
|
||||
}
|
||||
}
|
||||
else if (strcmp(key, "backend_write_timeout") == 0)
|
||||
{
|
||||
long ival = get_positive_int(value);
|
||||
if (ival)
|
||||
{
|
||||
valid = true;
|
||||
monitorSetNetworkTimeout(monitor, MONITOR_WRITE_TIMEOUT, ival);
|
||||
}
|
||||
}
|
||||
else if (strcmp(key, "backend_read_timeout") == 0)
|
||||
{
|
||||
long ival = get_positive_int(value);
|
||||
if (ival)
|
||||
{
|
||||
valid = true;
|
||||
monitorSetNetworkTimeout(monitor, MONITOR_READ_TIMEOUT, ival);
|
||||
}
|
||||
}
|
||||
|
||||
spinlock_release(&crt_lock);
|
||||
return valid;
|
||||
}
|
||||
|
Reference in New Issue
Block a user