Initialize router parameters in service_alloc
By moving the router parameter initialization into service_alloc, the creation of a new service can be simplified to a single function call.
This commit is contained in:
@ -3067,18 +3067,6 @@ int create_new_service(CONFIG_CONTEXT *obj)
|
|||||||
}
|
}
|
||||||
|
|
||||||
service->session_track_trx_state = config_get_bool(obj->parameters, CN_SESSION_TRACK_TRX_STATE);
|
service->session_track_trx_state = config_get_bool(obj->parameters, CN_SESSION_TRACK_TRX_STATE);
|
||||||
/** Store the configuration parameters for the service */
|
|
||||||
const MXS_MODULE *mod = get_module(router, MODULE_ROUTER);
|
|
||||||
|
|
||||||
if (mod)
|
|
||||||
{
|
|
||||||
config_add_defaults(obj, mod->parameters);
|
|
||||||
service_add_parameters(service, obj->parameters);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
error_count++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return error_count;
|
return error_count;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -120,6 +120,17 @@ void service_update_weights();
|
|||||||
*/
|
*/
|
||||||
void service_add_parameters(SERVICE *service, const MXS_CONFIG_PARAMETER *param);
|
void service_add_parameters(SERVICE *service, const MXS_CONFIG_PARAMETER *param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Add parameters to a service
|
||||||
|
*
|
||||||
|
* A copy of @c param is added to @c service.
|
||||||
|
*
|
||||||
|
* @param service Service where the parameters are added
|
||||||
|
* @param key Parameter name
|
||||||
|
* @param value Parameter value
|
||||||
|
*/
|
||||||
|
void service_add_parameter(SERVICE *service, const char* key, const char* value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Remove service parameter
|
* @brief Remove service parameter
|
||||||
*
|
*
|
||||||
|
|||||||
@ -130,20 +130,21 @@ SERVICE* service_alloc(const char *name, const char *router)
|
|||||||
service->log_auth_warnings = true;
|
service->log_auth_warnings = true;
|
||||||
service->strip_db_esc = true;
|
service->strip_db_esc = true;
|
||||||
service->rate_limits = rate_limits;
|
service->rate_limits = rate_limits;
|
||||||
if (service->name == NULL || service->routerModule == NULL)
|
|
||||||
{
|
|
||||||
if (service->name)
|
|
||||||
{
|
|
||||||
MXS_FREE(service->name);
|
|
||||||
}
|
|
||||||
MXS_FREE(service);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
service->stats.started = time(0);
|
service->stats.started = time(0);
|
||||||
service->stats.n_failed_starts = 0;
|
service->stats.n_failed_starts = 0;
|
||||||
service->state = SERVICE_STATE_ALLOC;
|
service->state = SERVICE_STATE_ALLOC;
|
||||||
spinlock_init(&service->spin);
|
spinlock_init(&service->spin);
|
||||||
|
|
||||||
|
// Load router default parameters
|
||||||
|
for (int i = 0; module->parameters[i].name; i++)
|
||||||
|
{
|
||||||
|
if (module->parameters[i].default_value)
|
||||||
|
{
|
||||||
|
service_add_parameter(service, module->parameters[i].name,
|
||||||
|
module->parameters[i].default_value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
spinlock_acquire(&service_spin);
|
spinlock_acquire(&service_spin);
|
||||||
service->next = allServices;
|
service->next = allServices;
|
||||||
allServices = service;
|
allServices = service;
|
||||||
@ -1562,7 +1563,7 @@ void service_add_parameters(SERVICE *service, const MXS_CONFIG_PARAMETER *param)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void service_add_parameters(SERVICE *service, const char* key, const char* value)
|
void service_add_parameter(SERVICE *service, const char* key, const char* value)
|
||||||
{
|
{
|
||||||
MXS_CONFIG_PARAMETER p{const_cast<char*>(key), const_cast<char*>(value), nullptr};
|
MXS_CONFIG_PARAMETER p{const_cast<char*>(key), const_cast<char*>(value), nullptr};
|
||||||
service_add_parameters(service, &p);
|
service_add_parameters(service, &p);
|
||||||
@ -1615,7 +1616,7 @@ void service_replace_parameter(SERVICE *service, const char* key, const char* va
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
service_add_parameters(service, key, value);
|
service_add_parameter(service, key, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user