MySQL 9.3.0
Source Code Documentation
Guidelines_from_conf_adapter Class Reference

Helper class used to create routing guideline from Router configuration. More...

#include <routing_guidelines_adapter.h>

Classes

struct  Role_info
 Information about one routing section. More...
 

Public Member Functions

 Guidelines_from_conf_adapter (const mysql_harness::Config::ConstSectionList &sections, net::io_context &io_ctx)
 Guidelines configuration adapter constructor. More...
 
stdx::expected< std::string, std::error_code > generate_guidelines_string ()
 Generate routing guideline based on the internal state of Guidelines_from_conf_adapter. More...
 

Private Types

using JsonValue = rapidjson::GenericValue< rapidjson::UTF8<>, rapidjson::CrtAllocator >
 
using JsonDocument = rapidjson::GenericDocument< rapidjson::UTF8<>, rapidjson::CrtAllocator >
 
using JsonStringBuffer = rapidjson::GenericStringBuffer< rapidjson::UTF8<>, rapidjson::CrtAllocator >
 

Private Member Functions

stdx::expected< void, std::error_code > fill_guidelines_doc ()
 Fill the internal routing guidelines doc. More...
 
void add_guidelines_name ()
 Add routing guidelines name section. More...
 
void add_guidelines_version ()
 Add routing guidelines version section. More...
 
void add_destinations (const std::string &section_name, const Guidelines_from_conf_adapter::Role_info &role_info)
 Add routing guidelines destinations section. More...
 
stdx::expected< void, std::error_code > add_routes (const std::string &section_name, const mysql_harness::ConfigSection *section, const Guidelines_from_conf_adapter::Role_info &role_info)
 Add routing guidelines routes section. More...
 
std::optional< Role_infoget_role_info (const mysql_harness::ConfigSection *section) const
 Get detail info from one section. More...
 
stdx::expected< std::string, std::error_code > get_route_match (const mysql_harness::ConfigSection *section) const
 Create route match section. More...
 
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. More...
 

Private Attributes

const std::string kDefaultName
 
bool has_routes_ {false}
 
std::optional< std::string > fallback_src_
 
const mysql_harness::Config::ConstSectionListsections_
 
net::io_contextio_ctx_
 
JsonDocument json_guidelines_doc_
 
rapidjson::CrtAllocator allocator_
 
JsonValue destinations_ {rapidjson::kArrayType}
 
JsonValue routes_ {rapidjson::kArrayType}
 

Detailed Description

Helper class used to create routing guideline from Router configuration.

Member Typedef Documentation

◆ JsonDocument

using Guidelines_from_conf_adapter::JsonDocument = rapidjson::GenericDocument<rapidjson::UTF8<>, rapidjson::CrtAllocator>
private

◆ JsonStringBuffer

using Guidelines_from_conf_adapter::JsonStringBuffer = rapidjson::GenericStringBuffer<rapidjson::UTF8<>, rapidjson::CrtAllocator>
private

◆ JsonValue

using Guidelines_from_conf_adapter::JsonValue = rapidjson::GenericValue<rapidjson::UTF8<>, rapidjson::CrtAllocator>
private

Constructor & Destructor Documentation

◆ Guidelines_from_conf_adapter()

Guidelines_from_conf_adapter::Guidelines_from_conf_adapter ( const mysql_harness::Config::ConstSectionList sections,
net::io_context io_ctx 
)

Guidelines configuration adapter constructor.

Parameters
sectionsRouter configuration sections
io_ctxIO context

Member Function Documentation

◆ add_destinations()

void Guidelines_from_conf_adapter::add_destinations ( const std::string &  section_name,
const Guidelines_from_conf_adapter::Role_info role_info 
)
private

Add routing guidelines destinations section.

◆ add_guidelines_name()

void Guidelines_from_conf_adapter::add_guidelines_name ( )
private

Add routing guidelines name section.

◆ add_guidelines_version()

void Guidelines_from_conf_adapter::add_guidelines_version ( )
private

Add routing guidelines version section.

◆ add_routes()

stdx::expected< void, std::error_code > Guidelines_from_conf_adapter::add_routes ( const std::string &  section_name,
const mysql_harness::ConfigSection section,
const Guidelines_from_conf_adapter::Role_info role_info 
)
private

Add routing guidelines routes section.

◆ fill_guidelines_doc()

stdx::expected< void, std::error_code > Guidelines_from_conf_adapter::fill_guidelines_doc ( )
private

Fill the internal routing guidelines doc.

◆ generate_guidelines_string()

stdx::expected< std::string, std::error_code > Guidelines_from_conf_adapter::generate_guidelines_string ( )

Generate routing guideline based on the internal state of Guidelines_from_conf_adapter.

In case when there are only static routing plugins running the guidelines document will be empty.

◆ get_fallback_destination()

std::optional< std::string > Guidelines_from_conf_adapter::get_fallback_destination ( const Protocol::Type  protocol,
std::string_view  host 
) const
private

If round-robin-with-fallback strategy is used get destination class that could be used as a fallback.

◆ get_role_info()

std::optional< Guidelines_from_conf_adapter::Role_info > Guidelines_from_conf_adapter::get_role_info ( const mysql_harness::ConfigSection section) const
private

Get detail info from one section.

◆ get_route_match()

stdx::expected< std::string, std::error_code > Guidelines_from_conf_adapter::get_route_match ( const mysql_harness::ConfigSection section) const
private

Create route match section.

Member Data Documentation

◆ allocator_

rapidjson::CrtAllocator Guidelines_from_conf_adapter::allocator_
private

◆ destinations_

JsonValue Guidelines_from_conf_adapter::destinations_ {rapidjson::kArrayType}
private

◆ fallback_src_

std::optional<std::string> Guidelines_from_conf_adapter::fallback_src_
private

◆ has_routes_

bool Guidelines_from_conf_adapter::has_routes_ {false}
private

◆ io_ctx_

net::io_context& Guidelines_from_conf_adapter::io_ctx_
private

◆ json_guidelines_doc_

JsonDocument Guidelines_from_conf_adapter::json_guidelines_doc_
private

◆ kDefaultName

const std::string Guidelines_from_conf_adapter::kDefaultName
private
Initial value:
{
"Routing guidelines generated from a config file"}

◆ routes_

JsonValue Guidelines_from_conf_adapter::routes_ {rapidjson::kArrayType}
private

◆ sections_

const mysql_harness::Config::ConstSectionList& Guidelines_from_conf_adapter::sections_
private

The documentation for this class was generated from the following files: