diff --git a/examples/roundrobinrouter.cpp b/examples/roundrobinrouter.cpp index 0216faa75..38aa95285 100644 --- a/examples/roundrobinrouter.cpp +++ b/examples/roundrobinrouter.cpp @@ -164,7 +164,7 @@ RRRouter::RRRouter(SERVICE* service) /* Read options specific to round robin router. */ MXS_CONFIG_PARAMETER* params = service->svc_config_param; m_max_backends = params->get_integer(MAX_BACKENDS); - m_write_server = config_get_server(params, WRITE_BACKEND); + m_write_server = params->get_server(WRITE_BACKEND); m_print_on_routing = params->get_bool(PRINT_ON_ROUTING); m_example_enum = params->get_enum(DUMMY, enum_example); diff --git a/include/maxscale/config.hh b/include/maxscale/config.hh index 6c599a093..933ca4e04 100644 --- a/include/maxscale/config.hh +++ b/include/maxscale/config.hh @@ -288,6 +288,22 @@ public: */ uint64_t get_size(const std::string& key) const; + /** + * @brief Get a service value + * + * @param key Parameter name + * @return Pointer to configured service + */ + SERVICE* get_service(const std::string& key) const; + + /** + * @brief Get a server value + * + * @param key Parameter name + * @return Pointer to configured server + */ + SERVER* get_server(const std::string& key) const; + char* name; /**< The name of the parameter */ char* value; /**< The value of the parameter */ MXS_CONFIG_PARAMETER* next; /**< Next pointer in the linked list */ @@ -413,27 +429,8 @@ bool config_param_is_valid(const MXS_MODULE_PARAM* params, const char* config_get_string(const MXS_CONFIG_PARAMETER* params, const char* key); /** - * @brief Get a service value - * - * @param params List of configuration parameters - * @param key Parameter name - * - * @return Pointer to configured service - */ -SERVICE* config_get_service(const MXS_CONFIG_PARAMETER* params, const char* key); - -/** - * @brief Get a server value - * - * @param params List of configuration parameters - * @param key Parameter name - * - * @return Pointer to configured server - */ -SERVER* config_get_server(const MXS_CONFIG_PARAMETER* params, const char* key); - -/** - * Get a serverlist value. The returned list is empty if even a partial error occurs. + * @brief Get an array of servers. The caller should free the produced array, + * but not the array elements. * * @param params List of configuration parameters * @param key Parameter name diff --git a/server/core/config.cc b/server/core/config.cc index 5c5139330..d7a38a06b 100644 --- a/server/core/config.cc +++ b/server/core/config.cc @@ -1802,16 +1802,16 @@ int64_t MXS_CONFIG_PARAMETER::get_enum(const std::string& key, const MXS_ENUM_VA return found ? rv : -1; } -SERVICE* config_get_service(const MXS_CONFIG_PARAMETER* params, const char* key) +SERVICE* MXS_CONFIG_PARAMETER::get_service(const std::string& key) const { - const char* value = config_get_value_string(params, key); - return service_find(value); + string param_value = get_string(key); + return service_find(param_value.c_str()); } -SERVER* config_get_server(const MXS_CONFIG_PARAMETER* params, const char* key) +SERVER* MXS_CONFIG_PARAMETER::get_server(const std::string& key) const { - const char* value = config_get_value_string(params, key); - return Server::find_by_unique_name(value); + string param_value = get_string(key); + return Server::find_by_unique_name(param_value.c_str()); } std::vector config_get_server_list(const MXS_CONFIG_PARAMETER* params, const char* key, @@ -3911,7 +3911,7 @@ int create_new_listener(CONFIG_CONTEXT* obj) else { const char* address = config_get_string(obj->parameters, CN_ADDRESS); - Service* service = static_cast(config_get_service(obj->parameters, CN_SERVICE)); + Service* service = static_cast(obj->parameters->get_service(CN_SERVICE)); mxb_assert(service); // Remove this once maxadmin is removed diff --git a/server/modules/filter/tee/tee.cc b/server/modules/filter/tee/tee.cc index 551b12288..49b423541 100644 --- a/server/modules/filter/tee/tee.cc +++ b/server/modules/filter/tee/tee.cc @@ -64,7 +64,7 @@ Tee::Tee(SERVICE* service, */ Tee* Tee::create(const char* name, MXS_CONFIG_PARAMETER* params) { - SERVICE* service = config_get_service(params, "service"); + SERVICE* service = params->get_service("service"); const char* source = config_get_string(params, "source"); const char* user = config_get_string(params, "user"); uint32_t cflags = params->get_enum("options", option_values); diff --git a/server/modules/monitor/csmon/csmon.cc b/server/modules/monitor/csmon/csmon.cc index 8f4d06c85..130a62faf 100644 --- a/server/modules/monitor/csmon/csmon.cc +++ b/server/modules/monitor/csmon/csmon.cc @@ -117,7 +117,7 @@ void CsMonitor::update_server_status(MXS_MONITORED_SERVER* srv) bool CsMonitor::configure(const MXS_CONFIG_PARAMETER* pParams) { - m_primary = config_get_server(pParams, "primary"); + m_primary = pParams->get_server("primary"); return true; } diff --git a/server/modules/routing/schemarouter/schemarouter.cc b/server/modules/routing/schemarouter/schemarouter.cc index 5c1aca3a8..1552be6dd 100644 --- a/server/modules/routing/schemarouter/schemarouter.cc +++ b/server/modules/routing/schemarouter/schemarouter.cc @@ -24,7 +24,7 @@ Config::Config(MXS_CONFIG_PARAMETER* conf) , debug(conf->get_bool("debug")) , ignore_regex(config_get_compiled_regex(conf, "ignore_databases_regex", 0, NULL)) , ignore_match_data(ignore_regex ? pcre2_match_data_create_from_pattern(ignore_regex, NULL) : NULL) - , preferred_server(config_get_server(conf, "preferred_server")) + , preferred_server(conf->get_server("preferred_server")) { ignored_dbs.insert("mysql"); ignored_dbs.insert("information_schema");