MySQL 9.1.0
Source Code Documentation
|
Manage destinations for a Connection Routing. More...
#include <destination.h>
Public Types | |
using | AddrVector = std::vector< mysql_harness::TCPAddress > |
Public Member Functions | |
RouteDestination (net::io_context &io_ctx, Protocol::Type protocol=Protocol::get_default()) | |
Default constructor. More... | |
virtual | ~RouteDestination ()=default |
Destructor. More... | |
RouteDestination (const RouteDestination &other)=delete | |
RouteDestination (RouteDestination &&other)=delete | |
RouteDestination & | operator= (const RouteDestination &other)=delete |
RouteDestination & | operator= (RouteDestination &&other)=delete |
virtual routing::RoutingStrategy | get_strategy ()=0 |
Return our routing strategy. More... | |
virtual void | add (const mysql_harness::TCPAddress dest) |
Adds a destination. More... | |
virtual void | add (const std::string &address, uint16_t port) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
virtual void | remove (const std::string &address, uint16_t port) |
Removes a destination. More... | |
virtual mysql_harness::TCPAddress | get (const std::string &address, uint16_t port) |
Gets destination based on address and port. More... | |
virtual void | clear () |
Removes all destinations. More... | |
size_t | size () noexcept |
Gets the number of destinations. More... | |
virtual bool | empty () const noexcept |
Returns whether there are destinations. More... | |
virtual void | start (const mysql_harness::PluginFuncEnv *env) |
Start the destination threads (if any) More... | |
AddrVector::iterator | begin () |
AddrVector::const_iterator | begin () const |
AddrVector::iterator | end () |
AddrVector::const_iterator | end () const |
virtual AddrVector | get_destinations () const |
virtual Destinations | destinations ()=0 |
get destinations to connect() to. More... | |
virtual mysqlrouter::ServerMode | purpose () const |
virtual std::optional< Destinations > | refresh_destinations (const Destinations &dests) |
refresh destinations. More... | |
virtual void | handle_sockets_acceptors () |
Trigger listening socket acceptors state handler based on the destination type. More... | |
Public Member Functions inherited from DestinationNodesStateNotifier | |
AllowedNodesChangeCallbacksListIterator | register_allowed_nodes_change_callback (const AllowedNodesChangedCallback &clb) |
Registers the callback for notification on the change in the state if the destination nodes. More... | |
void | unregister_allowed_nodes_change_callback (const AllowedNodesChangeCallbacksListIterator &it) |
Unregisters the callback registered with register_allowed_nodes_change_callback(). More... | |
void | register_start_router_socket_acceptor (const StartSocketAcceptorCallback &clb) |
Registers the callback for notification that the routing socket acceptor should accept new connections. More... | |
void | unregister_start_router_socket_acceptor () |
Unregisters the callback registered with register_start_router_socket_acceptor(). More... | |
void | register_stop_router_socket_acceptor (const StopSocketAcceptorCallback &clb) |
Registers the callback for notification that the routing socket acceptor should stop accepting new connections. More... | |
void | unregister_stop_router_socket_acceptor () |
Unregisters the callback registered with register_stop_router_socket_acceptor(). More... | |
void | register_md_refresh_callback (const MetadataRefreshCallback &callback) |
Registers a callback that is going to be used on metadata refresh. More... | |
void | unregister_md_refresh_callback () |
Unregisters the callback registered with register_md_refresh_callback(). More... | |
void | register_query_quarantined_destinations (const QueryQuarantinedDestinationsCallback &clb) |
Registers a callback that could be used for checking if the provided destination candidate is currently quarantined. More... | |
void | unregister_query_quarantined_destinations () |
Unregisters the callback registered with register_query_quarantined_destinations(). More... | |
Protected Attributes | |
AddrVector | destinations_ |
List of destinations. More... | |
std::mutex | mutex_update_ |
Mutex for updating destinations and iterator. More... | |
net::io_context & | io_ctx_ |
Protocol::Type | protocol_ |
Protocol for the destination. More... | |
Protected Attributes inherited from DestinationNodesStateNotifier | |
AllowedNodesChangeCallbacksList | allowed_nodes_change_callbacks_ |
MetadataRefreshCallback | md_refresh_callback_ |
StartSocketAcceptorCallback | start_router_socket_acceptor_callback_ |
StopSocketAcceptorCallback | stop_router_socket_acceptor_callback_ |
QueryQuarantinedDestinationsCallback | query_quarantined_destinations_callback_ |
std::mutex | allowed_nodes_change_callbacks_mtx_ |
std::mutex | md_refresh_callback_mtx_ |
std::mutex | socket_acceptor_handle_callbacks_mtx |
std::mutex | query_quarantined_destinations_callback_mtx_ |
Manage destinations for a Connection Routing.
This class manages destinations which are used in Connection Routing. A destination is usually a MySQL Server and is stored using the IP or hostname together with the TCP port (defaulting to 3306 for classic protocol or to 33060 for x protocol).
RouteDestination is meant to be a base class and used to inherite and create class which change the behavior. For example, the get_next()
method is usually changed to get the next server in the list.
using RouteDestination::AddrVector = std::vector<mysql_harness::TCPAddress> |
|
inline |
Default constructor.
io_ctx | context for IO operations |
protocol | Protocol for the destination, defaults to value returned by Protocol::get_default() |
|
virtualdefault |
Destructor.
|
delete |
|
delete |
|
virtual |
Adds a destination.
Adds a destination using the given address and port number.
dest | destination address |
Reimplemented in DestMetadataCacheGroup.
|
virtual |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Reimplemented in DestMetadataCacheGroup.
|
inline |
|
inline |
|
virtual |
Removes all destinations.
Removes all destinations from the list.
|
pure virtual |
get destinations to connect() to.
destinations are in order of preference.
Implemented in DestFirstAvailable, DestMetadataCacheGroup, DestNextAvailable, and DestRoundRobin.
|
inlinevirtualnoexcept |
Returns whether there are destinations.
Reimplemented in DestMetadataCacheGroup.
|
inline |
|
inline |
|
virtual |
Gets destination based on address and port.
Gets destination base on given address and port and returns a pair with the information.
Raises std::out_of_range when the combination of address and port is not in the list of destinations.
This function can be used to check whether given destination is in the list.
address | IP or name |
port | Port number |
|
virtual |
Reimplemented in DestMetadataCacheGroup.
|
pure virtual |
Return our routing strategy.
Implemented in DestFirstAvailable, DestMetadataCacheGroup, DestNextAvailable, and DestRoundRobin.
|
inlinevirtual |
Trigger listening socket acceptors state handler based on the destination type.
Reimplemented in DestMetadataCacheGroup.
|
delete |
|
delete |
|
inlinevirtual |
Reimplemented in DestMetadataCacheGroup.
|
virtual |
refresh destinations.
should be called after connecting to all destinations failed.
dests | previous destinations. |
Reimplemented in DestMetadataCacheGroup.
|
virtual |
Removes a destination.
Removes a destination using the given address and port number.
address | IP or name |
port | Port number |
|
noexcept |
Gets the number of destinations.
Gets the number of destinations currently in the list.
|
virtual |
Start the destination threads (if any)
env | pointer to the PluginFuncEnv object |
Reimplemented in DestMetadataCacheGroup.
|
protected |
List of destinations.
|
protected |
|
protected |
Mutex for updating destinations and iterator.
|
protected |
Protocol for the destination.