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:260
 
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:309
 
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:279
 
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