26#ifndef ROUTING_DEST_STATIC_INCLUDED
27#define ROUTING_DEST_STATIC_INCLUDED
39 const bool last_connection_successful,
40 const std::uint32_t dest_pool_size) = 0;
54 const bool last_connection_successful,
55 const std::uint32_t dest_pool_size)
override;
66 const bool last_connection_successful,
67 const std::uint32_t dest_pool_size)
override;
80 const bool last_connection_successful,
81 const std::uint32_t dest_pool_size)
override;
Type
supported protocols
Definition: base_protocol.h:32
Manage destinations for a Connection Routing.
Definition: destination.h:84
std::vector< mysql_harness::Destination > DestVector
Definition: destination.h:86
Destination to forward client connections to.
Definition: destination.h:43
First-available strategy.
Definition: dest_static.h:51
std::optional< std::uint32_t > get_destination_index(const bool last_connection_successful, const std::uint32_t dest_pool_size) override
Definition: dest_static.cc:101
MySQLRoutingContext holds data used by MySQLRouting (1 per plugin instances) and MySQLRoutingConnecti...
Definition: context.h:54
First-available strategy.
Definition: dest_static.h:63
std::optional< std::uint32_t > get_destination_index(const bool last_connection_successful, const std::uint32_t dest_pool_size) override
Definition: dest_static.cc:112
Round-robin strategy.
Definition: dest_static.h:77
bool started_
Definition: dest_static.h:84
std::optional< std::uint32_t > get_destination_index(const bool last_connection_successful, const std::uint32_t dest_pool_size) override
Definition: dest_static.cc:120
std::optional< std::uint32_t > failed_instance_index_
Definition: dest_static.h:85
Definition: dest_static.h:88
stdx::expected< void, std::error_code > init_destinations(const routing_guidelines::Session_info &) override
Set up destination manager, prepare the destinations.
Definition: dest_static.h:122
void add(const mysql_harness::Destination &dest)
Adds a destination.
Definition: dest_static.cc:58
std::vector< mysql_harness::Destination > get_destination_candidates() const override
Get addresses of all nodes that are a possible destination candidates.
Definition: dest_static.h:104
void handle_sockets_acceptors() override
Trigger listening socket acceptors state handler based on the destination type.
Definition: dest_static.h:113
std::unique_ptr< StrategyHandler > strategy_handler_
Get destination index based on routing strategy for static routes.
Definition: dest_static.h:134
void start(const mysql_harness::PluginFuncEnv *) override
Start the destination manager.
Definition: dest_static.cc:50
StaticDestinationsManager(routing::RoutingStrategy strategy, net::io_context &io_ctx, MySQLRoutingContext &routing_ctx)
Definition: dest_static.cc:28
DestVector destinations_
List of destinations.
Definition: dest_static.h:137
bool has_read_only() const override
Check if there are read-only destinations that could be used.
Definition: dest_static.h:130
void connect_status(std::error_code ec) override
Definition: dest_static.cc:68
Destination last_destination_
Definition: dest_static.h:138
Protocol::Type protocol_
Protocol for the endpoint.
Definition: dest_static.h:141
std::unique_ptr< Destination > get_next_destination(const routing_guidelines::Session_info &) override
Get destination that should be used for connection attempt.
Definition: dest_static.cc:73
bool has_read_write() const override
Check if there are read-write destinations that could be used.
Definition: dest_static.h:129
bool refresh_destinations(const routing_guidelines::Session_info &) override
refresh destinations.
Definition: dest_static.h:109
std::unique_ptr< Destination > get_last_used_destination() const override
Get destination that was selected as a destination candidate.
Definition: dest_static.h:118
Base class for routing strategy handler.
Definition: dest_static.h:34
virtual ~StrategyHandler()=default
std::uint32_t index_pos_
Definition: dest_static.h:43
virtual std::optional< std::uint32_t > get_destination_index(const bool last_connection_successful, const std::uint32_t dest_pool_size)=0
Definition: destination.h:95
PluginFuncEnv object.
Definition: loader.h:675
Definition: io_context.h:61
Definition: expected.h:286
RoutingStrategy
Routing strategies supported by Routing plugin.
Definition: routing.h:271
Information about incoming session.
Definition: routing_guidelines.h:103