25#ifndef ROUTING_GUIDELINES_ADAPTER_INCLUDED
26#define ROUTING_GUIDELINES_ADAPTER_INCLUDED
31#include <system_error>
33#ifdef RAPIDJSON_NO_SIZETYPEDEFINE
36#include <rapidjson/document.h>
37#include <rapidjson/error/en.h>
38#include <rapidjson/prettywriter.h>
39#include <rapidjson/stringbuffer.h>
85 "Routing guidelines generated from a config file"};
88 rapidjson::GenericValue<rapidjson::UTF8<>, rapidjson::CrtAllocator>;
90 rapidjson::GenericDocument<rapidjson::UTF8<>, rapidjson::CrtAllocator>;
92 rapidjson::GenericStringBuffer<rapidjson::UTF8<>,
93 rapidjson::CrtAllocator>;
128 const std::string §ion_name,
133 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:62
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:254
net::io_context & io_ctx_
Definition: routing_guidelines_adapter.h:153
rapidjson::GenericDocument< rapidjson::UTF8<>, rapidjson::CrtAllocator > JsonDocument
Definition: routing_guidelines_adapter.h:90
std::optional< std::string > fallback_src_
Definition: routing_guidelines_adapter.h:151
const mysql_harness::Config::ConstSectionList & sections_
Definition: routing_guidelines_adapter.h:152
JsonValue destinations_
Definition: routing_guidelines_adapter.h:156
void add_guidelines_version()
Add routing guidelines version section.
Definition: routing_guidelines_adapter.cc:100
Guidelines_from_conf_adapter(const mysql_harness::Config::ConstSectionList §ions, net::io_context &io_ctx)
Guidelines configuration adapter constructor.
Definition: routing_guidelines_adapter.cc:44
rapidjson::GenericValue< rapidjson::UTF8<>, rapidjson::CrtAllocator > JsonValue
Definition: routing_guidelines_adapter.h:88
bool has_routes_
Definition: routing_guidelines_adapter.h:150
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:201
void add_guidelines_name()
Add routing guidelines name section.
Definition: routing_guidelines_adapter.cc:93
stdx::expected< void, std::error_code > fill_guidelines_doc()
Fill the internal routing guidelines doc.
Definition: routing_guidelines_adapter.cc:50
JsonDocument json_guidelines_doc_
Definition: routing_guidelines_adapter.h:154
rapidjson::GenericStringBuffer< rapidjson::UTF8<>, rapidjson::CrtAllocator > JsonStringBuffer
Definition: routing_guidelines_adapter.h:93
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:80
JsonValue routes_
Definition: routing_guidelines_adapter.h:157
const std::string kDefaultName
Definition: routing_guidelines_adapter.h:84
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:303
std::optional< Role_info > get_role_info(const mysql_harness::ConfigSection *section) const
Get detail info from one section.
Definition: routing_guidelines_adapter.cc:171
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:273
rapidjson::CrtAllocator allocator_
Definition: routing_guidelines_adapter.h:155
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:37
Information about one routing section.
Definition: routing_guidelines_adapter.h:96
Protocol::Type protocol_
Definition: routing_guidelines_adapter.h:114
std::string role_str() const
Definition: routing_guidelines_adapter.cc:108
std::string strategy_str() const
Definition: routing_guidelines_adapter.cc:119
Strategy
Definition: routing_guidelines_adapter.h:97
@ round_robin_with_fallback
void set_protocol(const mysql_harness::ConfigSection *section)
Definition: routing_guidelines_adapter.cc:161
std::string host_
Definition: routing_guidelines_adapter.h:113
Role
Definition: routing_guidelines_adapter.h:103
Strategy strategy_
Definition: routing_guidelines_adapter.h:112
static Strategy strategy_from_string(std::string_view strategy_str)
Definition: routing_guidelines_adapter.cc:131
Role role_
Definition: routing_guidelines_adapter.h:111
void set_strategy(const mysql_harness::ConfigSection *section)
Definition: routing_guidelines_adapter.cc:142