25#ifndef ROUTING_DEST_STATIC_INCLUDED
26#define ROUTING_DEST_STATIC_INCLUDED
38 const bool last_connection_successful,
39 const std::uint32_t dest_pool_size) = 0;
53 const bool last_connection_successful,
54 const std::uint32_t dest_pool_size)
override;
65 const bool last_connection_successful,
66 const std::uint32_t dest_pool_size)
override;
79 const bool last_connection_successful,
80 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:163
std::vector< mysql_harness::Destination > DestVector
Definition: destination.h:165
Destination to forward client connections to.
Definition: destination.h:43
First-available strategy.
Definition: dest_static.h:50
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:100
MySQLRoutingContext holds data used by MySQLRouting (1 per plugin instances) and MySQLRoutingConnecti...
Definition: context.h:54
First-available strategy.
Definition: dest_static.h:62
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:111
Round-robin strategy.
Definition: dest_static.h:76
bool started_
Definition: dest_static.h:83
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:119
std::optional< std::uint32_t > failed_instance_index_
Definition: dest_static.h:84
Definition: dest_static.h:87
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:121
void add(const mysql_harness::Destination &dest)
Adds a destination.
Definition: dest_static.cc:57
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:103
void handle_sockets_acceptors() override
Trigger listening socket acceptors state handler based on the destination type.
Definition: dest_static.h:112
std::unique_ptr< StrategyHandler > strategy_handler_
Get destination index based on routing strategy for static routes.
Definition: dest_static.h:133
void start(const mysql_harness::PluginFuncEnv *) override
Start the destination manager.
Definition: dest_static.cc:49
StaticDestinationsManager(routing::RoutingStrategy strategy, net::io_context &io_ctx, MySQLRoutingContext &routing_ctx)
Definition: dest_static.cc:27
DestVector destinations_
List of destinations.
Definition: dest_static.h:136
bool has_read_only() const override
Check if there are read-only destinations that could be used.
Definition: dest_static.h:129
void connect_status(std::error_code ec) override
Definition: dest_static.cc:67
Destination last_destination_
Definition: dest_static.h:137
Protocol::Type protocol_
Protocol for the endpoint.
Definition: dest_static.h:140
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:72
bool has_read_write() const override
Check if there are read-write destinations that could be used.
Definition: dest_static.h:128
bool refresh_destinations(const routing_guidelines::Session_info &) override
refresh destinations.
Definition: dest_static.h:108
std::unique_ptr< Destination > get_last_used_destination() const override
Get destination that was selected as a destination candidate.
Definition: dest_static.h:117
Base class for routing strategy handler.
Definition: dest_static.h:33
virtual ~StrategyHandler()=default
std::uint32_t index_pos_
Definition: dest_static.h:42
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:673
Definition: io_context.h:61
Definition: expected.h:286
RoutingStrategy
Routing strategies supported by Routing plugin.
Definition: routing.h:265
Information about incoming session.
Definition: routing_guidelines.h:101