26#ifndef ROUTING_GUIDELINES_ADAPTER_INCLUDED
27#define ROUTING_GUIDELINES_ADAPTER_INCLUDED
32#include <system_error>
34#ifdef RAPIDJSON_NO_SIZETYPEDEFINE
37#include <rapidjson/document.h>
38#include <rapidjson/error/en.h>
39#include <rapidjson/prettywriter.h>
40#include <rapidjson/stringbuffer.h>
86 "Routing guidelines generated from a config file"};
89 rapidjson::GenericValue<rapidjson::UTF8<>, rapidjson::CrtAllocator>;
91 rapidjson::GenericDocument<rapidjson::UTF8<>, rapidjson::CrtAllocator>;
93 rapidjson::GenericStringBuffer<rapidjson::UTF8<>,
94 rapidjson::CrtAllocator>;
129 const std::string §ion_name,
134 const std::string §ion_name,
Type
supported protocols
Definition: base_protocol.h:32
Helper class used to create routing guideline from Router configuration.
Definition: routing_guidelines_adapter.h:63
std::optional< std::string > get_fallback_destination(const Protocol::Type protocol, std::string_view host) const
If round-robin-with-fallback strategy is used get destination class that could be used as a fallback.
Definition: routing_guidelines_adapter.cc:255
net::io_context & io_ctx_
Definition: routing_guidelines_adapter.h:154
rapidjson::GenericDocument< rapidjson::UTF8<>, rapidjson::CrtAllocator > JsonDocument
Definition: routing_guidelines_adapter.h:91
std::optional< std::string > fallback_src_
Definition: routing_guidelines_adapter.h:152
const mysql_harness::Config::ConstSectionList & sections_
Definition: routing_guidelines_adapter.h:153
JsonValue destinations_
Definition: routing_guidelines_adapter.h:157
void add_guidelines_version()
Add routing guidelines version section.
Definition: routing_guidelines_adapter.cc:101
Guidelines_from_conf_adapter(const mysql_harness::Config::ConstSectionList §ions, net::io_context &io_ctx)
Guidelines configuration adapter constructor.
Definition: routing_guidelines_adapter.cc:45
rapidjson::GenericValue< rapidjson::UTF8<>, rapidjson::CrtAllocator > JsonValue
Definition: routing_guidelines_adapter.h:89
bool has_routes_
Definition: routing_guidelines_adapter.h:151
stdx::expected< std::string, std::error_code > get_route_match(const mysql_harness::ConfigSection *section) const
Create route match section.
Definition: routing_guidelines_adapter.cc:202
void add_guidelines_name()
Add routing guidelines name section.
Definition: routing_guidelines_adapter.cc:94
stdx::expected< void, std::error_code > fill_guidelines_doc()
Fill the internal routing guidelines doc.
Definition: routing_guidelines_adapter.cc:51
JsonDocument json_guidelines_doc_
Definition: routing_guidelines_adapter.h:155
rapidjson::GenericStringBuffer< rapidjson::UTF8<>, rapidjson::CrtAllocator > JsonStringBuffer
Definition: routing_guidelines_adapter.h:94
stdx::expected< std::string, std::error_code > generate_guidelines_string()
Generate routing guideline based on the internal state of Guidelines_from_conf_adapter.
Definition: routing_guidelines_adapter.cc:81
JsonValue routes_
Definition: routing_guidelines_adapter.h:158
const std::string kDefaultName
Definition: routing_guidelines_adapter.h:85
stdx::expected< void, std::error_code > add_routes(const std::string §ion_name, const mysql_harness::ConfigSection *section, const Guidelines_from_conf_adapter::Role_info &role_info)
Add routing guidelines routes section.
Definition: routing_guidelines_adapter.cc:304
std::optional< Role_info > get_role_info(const mysql_harness::ConfigSection *section) const
Get detail info from one section.
Definition: routing_guidelines_adapter.cc:172
void add_destinations(const std::string §ion_name, const Guidelines_from_conf_adapter::Role_info &role_info)
Add routing guidelines destinations section.
Definition: routing_guidelines_adapter.cc:274
rapidjson::CrtAllocator allocator_
Definition: routing_guidelines_adapter.h:156
Configuration section.
Definition: config_parser.h:141
std::list< const ConfigSection * > ConstSectionList
Definition: config_parser.h:258
Definition: io_context.h:61
Definition: expected.h:286
Define rapidjson::SizeType to be std::uint64_t.
const char * host
Definition: mysqladmin.cc:66
#define ROUTING_EXPORT
Definition: routing_export.h:15
stdx::expected< std::string, std::error_code > ROUTING_EXPORT create_routing_guidelines_document(const mysql_harness::Config::ConstSectionList §ions, net::io_context &io_ctx)
Create a routing guideline from Router configuration.
Definition: routing_guidelines_adapter.cc:38
Information about one routing section.
Definition: routing_guidelines_adapter.h:97
Protocol::Type protocol_
Definition: routing_guidelines_adapter.h:115
std::string role_str() const
Definition: routing_guidelines_adapter.cc:109
std::string strategy_str() const
Definition: routing_guidelines_adapter.cc:120
Strategy
Definition: routing_guidelines_adapter.h:98
@ round_robin_with_fallback
void set_protocol(const mysql_harness::ConfigSection *section)
Definition: routing_guidelines_adapter.cc:162
std::string host_
Definition: routing_guidelines_adapter.h:114
Role
Definition: routing_guidelines_adapter.h:104
Strategy strategy_
Definition: routing_guidelines_adapter.h:113
static Strategy strategy_from_string(std::string_view strategy_str)
Definition: routing_guidelines_adapter.cc:132
Role role_
Definition: routing_guidelines_adapter.h:112
void set_strategy(const mysql_harness::ConfigSection *section)
Definition: routing_guidelines_adapter.cc:143