26#ifndef ROUTING_CONNECTION_INCLUDED
27#define ROUTING_CONNECTION_INCLUDED
74 virtual std::optional<net::ip::tcp::endpoint>
171 const auto now = clock_type::now();
173 stats.last_sent_to_server = now;
174 stats.bytes_down += bytes;
179 const auto now = clock_type::now();
181 stats.last_received_from_server = now;
182 stats.bytes_up += bytes;
198 return disconnect_([](
auto requested) {
return requested; });
246 std::function<
void(std::string, uint16_t, std::error_code)> func) {
297 std::function<void(std::string, uint16_t, std::error_code)>
303template <
class ConnectionType>
331 return ret_type{std::in_place,
332 std::make_unique<TcpConnection>(std::move(
socket()),
337template <
class ConnectionType>
366 return std::move(pool_res.value());
375 return {std::in_place, std::make_unique<TcpConnection>(
Definition: connection.h:217
server_protocol_type::endpoint & endpoint()
Definition: connection.h:234
void connect_timed_out(bool v)
Definition: connection.h:238
std::function< void(std::string, uint16_t)> on_connect_success_
Definition: connection.h:299
std::function< void(std::string, uint16_t, std::error_code)> on_connect_failure_
Definition: connection.h:298
net::steady_timer & timer()
Definition: connection.h:236
stdx::expected< void, std::error_code > connect_init()
Definition: connection.cc:90
stdx::expected< void, std::error_code > init_destination()
Definition: connection.cc:38
Destinations & destinations_
Definition: connection.h:283
std::error_code last_ec_
Definition: connection.h:288
net::steady_timer connect_timer_
Definition: connection.h:292
stdx::expected< void, std::error_code > resolve()
Definition: connection.cc:54
server_protocol_type::endpoint server_endpoint_
Definition: connection.h:280
Function
Definition: connection.h:228
stdx::expected< void, std::error_code > init_endpoint()
Definition: connection.cc:84
std::string destination_id() const
Definition: connection.h:243
stdx::expected< void, std::error_code > connected()
Definition: connection.cc:218
stdx::expected< void, std::error_code > connect_failed(std::error_code ec)
ConnectorBase(net::io_context &io_ctx, RouteDestination *route_destination, Destinations &destinations)
Definition: connection.h:221
void destination_id(std::string id)
Definition: connection.h:242
bool connect_timed_out_
Definition: connection.h:294
void on_connect_success(std::function< void(std::string, uint16_t)> func)
Definition: connection.h:250
Destinations::iterator destinations_it_
Definition: connection.h:284
net::ip::tcp::resolver::results_type endpoints_
Definition: connection.h:285
bool connect_timed_out() const
Definition: connection.h:240
std::function< bool(std::string, uint16_t)> on_is_destination_good_
Definition: connection.h:300
Function func_
Definition: connection.h:290
server_protocol_type::socket & socket()
Definition: connection.h:233
net::ip::tcp::resolver resolver_
Definition: connection.h:278
bool is_destination_good(const std::string &hostname, uint16_t port) const
Definition: connection.h:258
void on_is_destination_good(std::function< bool(std::string, uint16_t)> func)
Definition: connection.h:254
stdx::expected< void, std::error_code > next_destination()
Definition: connection.cc:250
net::io_context & io_ctx_
Definition: connection.h:276
stdx::expected< void, std::error_code > try_connect()
Definition: connection.cc:103
std::string destination_id_
Definition: connection.h:295
net::ip::tcp::resolver::results_type::iterator endpoints_it_
Definition: connection.h:286
stdx::expected< void, std::error_code > connect_finish()
Definition: connection.cc:185
server_protocol_type::socket server_sock_
Definition: connection.h:279
stdx::expected< void, std::error_code > next_endpoint()
Definition: connection.cc:230
void on_connect_failure(std::function< void(std::string, uint16_t, std::error_code)> func)
Definition: connection.h:245
RouteDestination * route_destination_
Definition: connection.h:282
Definition: connection.h:304
stdx::expected< ConnectionType, std::error_code > connect()
Definition: connection.h:308
A forward iterable container of destinations.
Definition: destination.h:107
typename container_type::iterator iterator
Definition: destination.h:111
Monitor pattern.
Definition: monitor.h:39
Definition: connection.h:44
virtual std::string get_destination_id() const =0
void accepted()
Definition: connection.cc:277
MySQLRoutingConnectionBase(MySQLRoutingContext &context, std::function< void(MySQLRoutingConnectionBase *)> remove_callback)
Definition: connection.h:46
clock_type::time_point time_point_type
Definition: connection.h:118
virtual void connected()
Definition: connection.cc:284
const MySQLRoutingContext & context() const
Definition: connection.h:54
time_point_type get_started() const
Definition: connection.h:120
Stats get_stats() const
Definition: connection.h:166
std::size_t get_bytes_down() const
Definition: connection.h:113
std::chrono::system_clock clock_type
Definition: connection.h:117
void transfered_to_server(size_t bytes)
Definition: connection.h:170
virtual std::string read_only_destination_id() const
Definition: connection.h:58
virtual std::optional< net::ip::tcp::endpoint > read_write_destination_endpoint() const
Definition: connection.h:75
std::string get_client_address() const
Returns address of client which connected to router.
Definition: connection.h:101
std::size_t get_bytes_up() const
Definition: connection.h:109
Monitor< bool > disconnect_
Definition: connection.h:209
net::impl::socket::native_handle_type client_fd_
Definition: connection.h:214
virtual std::optional< net::ip::tcp::endpoint > read_only_destination_endpoint() const
Definition: connection.h:69
std::string get_server_address() const
Returns address of server to which connection is established.
Definition: connection.h:86
void disassociate()
Definition: connection.h:186
void log_connection_summary()
Definition: connection.cc:298
Monitor< Stats > stats_
Definition: connection.h:207
virtual void disconnect()=0
time_point_type get_connected_to_server() const
Definition: connection.h:124
std::function< void(MySQLRoutingConnectionBase *)> remove_callback_
callback that is called when thread of execution completes
Definition: connection.h:205
virtual ~MySQLRoutingConnectionBase()=default
MySQLRoutingContext & context()
Definition: connection.h:53
void client_address(const std::string &dest)
Definition: connection.h:105
void transfered_to_client(size_t bytes)
Definition: connection.h:178
time_point_type get_last_received_from_server() const
Definition: connection.h:132
virtual std::string read_write_destination_id() const
Definition: connection.h:62
time_point_type get_last_sent_to_server() const
Definition: connection.h:128
auto disconnect_request(F &&f)
Definition: connection.h:193
virtual net::impl::socket::native_handle_type get_client_fd() const =0
virtual std::optional< net::ip::tcp::endpoint > destination_endpoint() const =0
void server_address(const std::string &dest)
Definition: connection.h:90
bool disconnect_requested() const
Definition: connection.h:197
MySQLRoutingContext & context_
wrapper for common data used by all routing threads
Definition: connection.h:203
MySQLRoutingContext holds data used by MySQLRouting (1 per plugin instances) and MySQLRoutingConnecti...
Definition: context.h:59
Definition: connection.h:338
stdx::expected< ConnectionType, std::error_code > connect()
Definition: connection.h:348
pool_lookup_cb pool_lookup_
Definition: connection.h:384
std::optional< ConnectionType > probe_pool()
Definition: connection.h:380
PooledConnector(net::io_context &io_ctx, RouteDestination *route_destination, Destinations &destinations, pool_lookup_cb pool_lookup)
Definition: connection.h:343
std::function< std::optional< ConnectionType >(const server_protocol_type::endpoint &ep)> pool_lookup_cb
Definition: connection.h:341
Manage destinations for a Connection Routing.
Definition: destination.h:189
Definition: socket.h:1090
Definition: io_context.h:61
Definition: internet.h:678
Definition: internet.h:542
const_iterator iterator
Definition: internet.h:550
Definition: internet.h:608
TCP protocol.
Definition: internet.h:1155
Definition: expected.h:286
struct stats stats
Definition: mysqlslap.cc:238
bool empty(const Histogram &histogram)
Return true if 'histogram' was built on an empty table.
Definition: histogram.h:693
std::error_code make_error_code(DynamicLoaderErrc ec)
make error_code from a DynamicLoaderErrc.
Definition: dynamic_loader.cc:79
const char * begin(const char *const c)
Definition: base64.h:44
int native_handle_type
Definition: socket_constants.h:51
Definition: gcs_xcom_synode.h:64
unexpected(E) -> unexpected< E >
required uint64 port
Definition: replication_asynchronous_connection_failover.proto:33
Definition: connection.h:137
time_point_type started
Definition: connection.h:160
time_point_type last_sent_to_server
Definition: connection.h:162
time_point_type connected_to_server
Definition: connection.h:161
std::size_t bytes_down
Definition: connection.h:158
Stats(std::string client_address, std::string server_address, std::size_t bytes_up, std::size_t bytes_down, time_point_type started, time_point_type connected_to_server, time_point_type last_sent_to_server, time_point_type last_received_from_server)
Definition: connection.h:140
std::string client_address
Definition: connection.h:154
std::string server_address
Definition: connection.h:155
time_point_type last_received_from_server
Definition: connection.h:163
std::size_t bytes_up
Definition: connection.h:157
Definition: mysqlslap.cc:240
unsigned long id[MAX_DEAD]
Definition: xcom_base.cc:510