MySQL 9.2.0
Source Code Documentation
routing_guidelines::Routing_guidelines_engine Class Referencefinal

Routing guidelines engine. More...

#include <routing_guidelines.h>

Classes

struct  Destination_classification
 Result of destination classification. More...
 
struct  Route
 Class representing routing guidelines route section entry. More...
 
struct  Route_classification
 Result of route classification. More...
 
struct  RouteChanges
 Type for names of Routes changed during routing guidelines document update. More...
 
struct  Rpd
 

Public Types

using ResolveCache = std::unordered_map< std::string, net::ip::address >
 Map with preprocessed resolved hostnames. More...
 

Public Member Functions

 Routing_guidelines_engine ()
 
 ~Routing_guidelines_engine ()
 
 Routing_guidelines_engine (Routing_guidelines_engine &&rp)
 
Routing_guidelines_engineoperator= (Routing_guidelines_engine &&)
 
 Routing_guidelines_engine (const Routing_guidelines_engine &)=delete
 
Routing_guidelines_engineoperator= (const Routing_guidelines_engine &)=delete
 
RouteChanges update_routing_guidelines (Routing_guidelines_engine &&new_rp, bool is_provided_by_user=true)
 Update routing guidelines and return affected classes and routes. More...
 
const std::string & name () const
 Get routing routing guidelines document name. More...
 
Route_classification classify (const Session_info &session, const Router_info &router_info, const Sql_info *sql=nullptr) const
 Compute a route of a session. More...
 
Destination_classification classify (const Server_info &instance, const Router_info &router_info) const
 Compute destination classes to which a MySQL instance belongs. More...
 
const std::vector< std::string > & destination_classes () const
 Get destination names defined by routing guidelines document. More...
 
const std::vector< Route > & get_routes () const
 Get list of routes defined in routing guidelines. More...
 
std::vector< Resolve_hosthostnames_to_resolve () const
 List of hostnames that are used in routing guideline document that need to be resolved. More...
 
void update_resolve_cache (ResolveCache cache)
 Set the resolved hostnames cache, used when hostnames used by the routing guidelines are resolved. More...
 
const rapidjson::Document & get_routing_guidelines_document () const
 Get routing guidelines document that is used by the guidelines engine. More...
 
bool extended_session_info_in_use () const
 Check if routing guideline in use uses extended session info that needs traffic inspection. More...
 
bool session_rand_used () const
 Check if routing guideline in use uses random value generated per session. More...
 
bool routing_guidelines_updated () const
 Check if the routing guidelines were updated. More...
 
Routing_guidelines_engine::RouteChanges restore_default ()
 Restore auto-generated guideline (based on Router's configuration). More...
 
void set_default_routing_guidelines (std::string routing_guidelines_doc)
 Set the default guideline (auto-generated based on Router's configuration). More...
 

Static Public Member Functions

static std::string get_schema ()
 Get routing guidelines schema describing guidelines document. More...
 
static Routing_guidelines_engine create (const std::string &routing_guidelines_document)
 Factory method for creating instance of Routing_guidelines_engine. More...
 
static void validate_one_route (const std::string &route)
 Validate route entry string. More...
 
static void validate_one_destination (const std::string &destination)
 Validate destination entry string. More...
 
static void validate_guideline_document (const std::string &doc)
 Validate whole guidelines document. More...
 

Private Member Functions

RouteChanges compare (const Routing_guidelines_engine &new_routing_guidelines)
 Compute changes introduced by the new routing guidelines. More...
 

Private Attributes

std::unique_ptr< Rpdrpd_
 
rapidjson::Document routing_guidelines_document_
 
std::string default_routing_guidelines_doc_
 

Friends

class Routing_guidelines_document_parser
 

Detailed Description

Routing guidelines engine.

Responsible for traffic classification based on routing guidelines document, information about the given Router instance, incoming session information and destination servers that are provided by the metadata.

Member Typedef Documentation

◆ ResolveCache

Map with preprocessed resolved hostnames.

Constructor & Destructor Documentation

◆ Routing_guidelines_engine() [1/3]

routing_guidelines::Routing_guidelines_engine::Routing_guidelines_engine ( )

◆ ~Routing_guidelines_engine()

routing_guidelines::Routing_guidelines_engine::~Routing_guidelines_engine ( )
default

◆ Routing_guidelines_engine() [2/3]

routing_guidelines::Routing_guidelines_engine::Routing_guidelines_engine ( Routing_guidelines_engine &&  rp)
default

◆ Routing_guidelines_engine() [3/3]

routing_guidelines::Routing_guidelines_engine::Routing_guidelines_engine ( const Routing_guidelines_engine )
delete

Member Function Documentation

◆ classify() [1/2]

Routing_guidelines_engine::Destination_classification routing_guidelines::Routing_guidelines_engine::classify ( const Server_info instance,
const Router_info router_info 
) const

Compute destination classes to which a MySQL instance belongs.

If no suitable class is found class_names vector in returned Destination_classification will be empty.

◆ classify() [2/2]

Routing_guidelines_engine::Route_classification routing_guidelines::Routing_guidelines_engine::classify ( const Session_info session,
const Router_info router_info,
const Sql_info sql = nullptr 
) const

Compute a route of a session.

◆ compare()

Routing_guidelines_engine::RouteChanges routing_guidelines::Routing_guidelines_engine::compare ( const Routing_guidelines_engine new_routing_guidelines)
private

Compute changes introduced by the new routing guidelines.

◆ create()

Routing_guidelines_engine routing_guidelines::Routing_guidelines_engine::create ( const std::string &  routing_guidelines_document)
static

Factory method for creating instance of Routing_guidelines_engine.

Parameters
routing_guidelines_documentdocument content.
Returns
instance of the Routing_guidelines_engine class.
Exceptions
Guidelines_parse_errorcontaining all encountered errors.

◆ destination_classes()

const std::vector< std::string > & routing_guidelines::Routing_guidelines_engine::destination_classes ( ) const

Get destination names defined by routing guidelines document.

◆ extended_session_info_in_use()

bool routing_guidelines::Routing_guidelines_engine::extended_session_info_in_use ( ) const

Check if routing guideline in use uses extended session info that needs traffic inspection.

◆ get_routes()

const std::vector< Routing_guidelines_engine::Route > & routing_guidelines::Routing_guidelines_engine::get_routes ( ) const

Get list of routes defined in routing guidelines.

◆ get_routing_guidelines_document()

const rapidjson::Document & routing_guidelines::Routing_guidelines_engine::get_routing_guidelines_document ( ) const

Get routing guidelines document that is used by the guidelines engine.

◆ get_schema()

std::string routing_guidelines::Routing_guidelines_engine::get_schema ( )
static

Get routing guidelines schema describing guidelines document.

◆ hostnames_to_resolve()

std::vector< Resolve_host > routing_guidelines::Routing_guidelines_engine::hostnames_to_resolve ( ) const

List of hostnames that are used in routing guideline document that need to be resolved.

◆ name()

const std::string & routing_guidelines::Routing_guidelines_engine::name ( ) const

Get routing routing guidelines document name.

◆ operator=() [1/2]

Routing_guidelines_engine & routing_guidelines::Routing_guidelines_engine::operator= ( const Routing_guidelines_engine )
delete

◆ operator=() [2/2]

Routing_guidelines_engine & routing_guidelines::Routing_guidelines_engine::operator= ( Routing_guidelines_engine &&  )
default

◆ restore_default()

Routing_guidelines_engine::RouteChanges routing_guidelines::Routing_guidelines_engine::restore_default ( )

Restore auto-generated guideline (based on Router's configuration).

Returns
names of guidelines routes that were affected by this update.

◆ routing_guidelines_updated()

bool routing_guidelines::Routing_guidelines_engine::routing_guidelines_updated ( ) const

Check if the routing guidelines were updated.

That means that there is a custom routing guideline in use instead of an auto-generated one.

◆ session_rand_used()

bool routing_guidelines::Routing_guidelines_engine::session_rand_used ( ) const

Check if routing guideline in use uses random value generated per session.

◆ set_default_routing_guidelines()

void routing_guidelines::Routing_guidelines_engine::set_default_routing_guidelines ( std::string  routing_guidelines_doc)
inline

Set the default guideline (auto-generated based on Router's configuration).

Parameters
routing_guidelines_docrouting guidelines document

◆ update_resolve_cache()

void routing_guidelines::Routing_guidelines_engine::update_resolve_cache ( ResolveCache  cache)

Set the resolved hostnames cache, used when hostnames used by the routing guidelines are resolved.

Can be called from a different thread, than the one performing classification.

◆ update_routing_guidelines()

Routing_guidelines_engine::RouteChanges routing_guidelines::Routing_guidelines_engine::update_routing_guidelines ( Routing_guidelines_engine &&  new_rp,
bool  is_provided_by_user = true 
)

Update routing guidelines and return affected classes and routes.

Parameters
[in]new_rp- new Routing Guidelines engine
[in]is_provided_by_user- true if guideline is provided by user or false if it is auto-generated.

◆ validate_guideline_document()

void routing_guidelines::Routing_guidelines_engine::validate_guideline_document ( const std::string &  doc)
static

Validate whole guidelines document.

Exceptions
std::runtime_errorwhen guidelines doc is invalid

◆ validate_one_destination()

void routing_guidelines::Routing_guidelines_engine::validate_one_destination ( const std::string &  destination)
static

Validate destination entry string.

Exceptions
std::runtime_errorwhen destination entry is invalid

◆ validate_one_route()

void routing_guidelines::Routing_guidelines_engine::validate_one_route ( const std::string &  route)
static

Validate route entry string.

Exceptions
std::runtime_errorwhen route entry is invalid

Friends And Related Function Documentation

◆ Routing_guidelines_document_parser

Member Data Documentation

◆ default_routing_guidelines_doc_

std::string routing_guidelines::Routing_guidelines_engine::default_routing_guidelines_doc_
private

◆ routing_guidelines_document_

rapidjson::Document routing_guidelines::Routing_guidelines_engine::routing_guidelines_document_
private

◆ rpd_

std::unique_ptr<Rpd> routing_guidelines::Routing_guidelines_engine::rpd_
private

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