Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 24 additions & 14 deletions example/config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -311,10 +311,28 @@ void parse_options(config_data *data, const config &options)
}
}

std::shared_ptr<dnet_backend_info> dnet_parse_backend(config_data *data, uint32_t backend_id, const config &backend)
{
auto info = std::make_shared<dnet_backend_info>(data->logger, backend_id);

info->enable_at_start = backend.at<bool>("enable", true);
info->read_only_at_start = backend.at<bool>("read_only", false);
info->state = DNET_BACKEND_DISABLED;
info->history = backend.at("history", std::string());

if (info->enable_at_start) {
// It's parsed to check configuration at start
// It will be reparsed again at backend's initialization anyway
info->parse(data, backend);
}

return info;
}

void parse_backends(config_data *data, const config &backends)
{
std::set<uint32_t> backends_ids;
auto &backends_info = data->backends->backends;
auto config_backends = data->backends;

for (size_t index = 0; index < backends.size(); ++index) {
const config backend = backends.at(index);
Expand All @@ -327,19 +345,11 @@ void parse_backends(config_data *data, const config &backends)
<< " duplicates one of previous backend_id";
}

while (backend_id + 1 > backends_info.size())
backends_info.emplace_back(data->logger, backends_info.size());

dnet_backend_info &info = backends_info[backend_id];
info.enable_at_start = backend.at<bool>("enable", true);
info.read_only_at_start = backend.at<bool>("read_only", false);
info.state = DNET_BACKEND_DISABLED;
info.history = backend.at("history", std::string());

if (info.enable_at_start) {
// It's parsed to check configuration at start
// It will be reparsed again at backend's initialization anyway
info.parse(data, backend);
if (!config_backends->get_backend(backend_id)) {
auto info = dnet_parse_backend(data, backend_id, backend);
if (info) {
config_backends->add_backend(info);
}
}
}
}
Expand Down
4 changes: 3 additions & 1 deletion example/config.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,7 @@ struct config_data : public dnet_config_data
std::mutex parser_mutex;
std::shared_ptr<config_parser> parser;
dnet_time config_timestamp;
dnet_backend_info_list backends_guard;
dnet_backend_info_manager backends_guard;
std::string logger_value;
ioremap::elliptics::logger_base logger_base;
ioremap::elliptics::logger logger;
Expand All @@ -363,6 +363,8 @@ struct config_data : public dnet_config_data
std::unique_ptr<monitor::monitor_config> monitor_config;
};

std::shared_ptr<dnet_backend_info> dnet_parse_backend(config_data *data, uint32_t backend_id, const config &backend);

} } } // namespace ioremap::elliptics::config

#endif // CONFIG_HPP
Loading