26#ifndef ROUTING_X_CONNECTION_INCLUDED 
   27#define ROUTING_X_CONNECTION_INCLUDED 
   34#include <mysqlx_connection.pb.h> 
   51  void caps(std::unique_ptr<Mysqlx::Connection::Capabilities> 
caps) {
 
   59  std::unique_ptr<Mysqlx::Connection::Capabilities> 
caps_;
 
   64      public std::enable_shared_from_this<MysqlRoutingXConnection> {
 
   74      std::unique_ptr<ConnectionBase> client_connection,
 
   75      std::unique_ptr<RoutingConnectionBase> client_routing_connection,
 
   80                     std::move(client_routing_connection),
 
   96  template <
typename... Args>
 
   97  [[nodiscard]] 
static std::shared_ptr<MysqlRoutingXConnection> 
create(
 
  100    return std::shared_ptr<MysqlRoutingXConnection>(
 
  105  std::shared_ptr<MysqlRoutingXConnection> 
getptr() {
 
  106    return shared_from_this();
 
  110      std::vector<uint8_t> &error_frame, uint16_t error_code,
 
  111      const std::string &msg, 
const std::string &sql_state = 
"HY000",
 
  759    is_completed_.wait([](
auto ready) { 
return ready == 
true; });
 
  778  clock_type::time_point 
started_{clock_type::now()};
 
Kerberos Client Authentication nullptr
Definition: auth_kerberos_client_plugin.cc:247
 
SSL aware socket buffers.
Definition: channel.h:65
 
void set_routing_source(std::string name)
Definition: connection.h:267
 
const routing_guidelines::Server_info & server_info() const
Definition: connection.h:271
 
void destination_id(std::optional< mysql_harness::Destination > id)
Definition: connection.h:259
 
std::string routing_source() const
Definition: connection.h:266
 
Manage destinations for a Connection Routing.
Definition: destination.h:84
 
bool routing_guidelines_session_rand_used() const
Check if routing guidelines uses $.session.rand as a match criterion.
Definition: destination.h:166
 
Definition: connection.h:47
 
std::chrono::system_clock clock_type
Definition: connection.h:132
 
MySQLRoutingContext & context()
Definition: connection.h:56
 
void client_address(const std::string &dest)
Definition: connection.h:120
 
void set_routing_guidelines_session_rand()
Definition: connection.cc:342
 
MySQLRoutingContext holds data used by MySQLRouting (1 per plugin instances) and MySQLRoutingConnecti...
Definition: context.h:54
 
Definition: x_connection.h:64
 
void client_cap_get()
client wants to get the capabilities of the server.
Definition: x_connection.cc:861
 
void recv_client_failed(std::error_code ec)
Definition: x_connection.cc:353
 
const ServerSideConnection & server_conn() const
Definition: x_connection.h:738
 
void server_recv_switch_tls_response()
Definition: x_connection.cc:921
 
void async_send_server(Function next)
Definition: x_connection.cc:426
 
void server_recv_prepare_deallocate_response_forward()
Definition: x_connection.cc:2399
 
void server_recv_expect_close_response_forward_last()
Definition: x_connection.cc:2604
 
void server_recv_crud_delete_response()
Definition: x_connection.cc:2098
 
void client_crud_modify_view()
Definition: x_connection.cc:2676
 
void client_cursor_open()
Definition: x_connection.cc:2805
 
void server_recv_cap_get_response_forward()
Definition: x_connection.cc:1335
 
void server_recv_stmt_execute_response_forward()
Definition: x_connection.cc:2012
 
void server_recv_prepare_execute_response_forward()
Definition: x_connection.cc:2471
 
void client_cursor_fetch()
Definition: x_connection.cc:2872
 
void client_stmt_execute()
Definition: x_connection.cc:1955
 
void server_recv_crud_delete_response_forward()
Definition: x_connection.cc:2144
 
void server_recv_cap_get_response()
Definition: x_connection.cc:1291
 
stdx::expected< ForwardResult, std::error_code > forward_frame_from_server_to_client()
Definition: x_connection.cc:709
 
void client_prepare_execute()
Definition: x_connection.cc:2414
 
void passthrough_tls_init()
 
void server_recv_cap_set_response_forward_last()
Definition: x_connection.cc:1855
 
ServerSideConnection & server_conn()
Definition: x_connection.h:737
 
void server_recv_switch_tls_response_passthrough_forward_last()
Definition: x_connection.cc:1080
 
ClientSideConnection client_conn_
Definition: x_connection.h:788
 
void server_recv_crud_modify_view_response_forward()
Definition: x_connection.cc:2727
 
void async_run()
Definition: x_connection.cc:313
 
void server_recv_cursor_close_response()
Definition: x_connection.cc:2946
 
void server_tls_shutdown()
Definition: x_connection.cc:3179
 
void client_sess_auth_start()
Definition: x_connection.cc:1862
 
stdx::expected< ForwardResult, std::error_code > forward_frame_from_client_to_server()
Definition: x_connection.cc:675
 
void client_crud_drop_view()
Definition: x_connection.cc:2741
 
void connect()
Definition: x_connection.cc:742
 
void server_recv_crud_find_response()
Definition: x_connection.cc:2029
 
void client_crud_create_view()
Definition: x_connection.cc:2611
 
void server_recv_cap_get_response_forward_last()
Definition: x_connection.cc:1340
 
ServerSideConnection server_conn_
Definition: x_connection.h:789
 
static std::shared_ptr< MysqlRoutingXConnection > create(Args &&...args)
Definition: x_connection.h:97
 
void server_recv_expect_close_response_forward()
Definition: x_connection.cc:2599
 
void call_next_function(Function next)
Definition: x_connection.h:282
 
stdx::expected< void, std::error_code > forward_tls(Channel &src_channel, Channel &dst_channel)
Definition: x_connection.cc:1093
 
int active_work_
Definition: x_connection.h:774
 
void client_tls_shutdown()
Definition: x_connection.cc:3186
 
SslMode source_ssl_mode() const
Definition: x_connection.h:114
 
SslMode dest_ssl_mode() const
Definition: x_connection.h:116
 
connector_type connector_
Definition: x_connection.h:786
 
void client_crud_update()
Definition: x_connection.cc:2219
 
void server_recv_stmt_execute_response_forward_last()
Definition: x_connection.cc:2017
 
void server_recv_session_close_response_forward()
Definition: x_connection.cc:3055
 
void forward_tls_server_to_client()
Definition: x_connection.cc:1162
 
void server_recv_crud_drop_view_response_forward_last()
Definition: x_connection.cc:2798
 
std::optional< mysql_harness::Destination > get_destination_id() const override
Definition: x_connection.h:740
 
void client_recv_auth_continue()
Definition: x_connection.cc:1943
 
static stdx::expected< size_t, std::error_code > encode_error_packet(std::vector< uint8_t > &error_frame, uint16_t error_code, const std::string &msg, const std::string &sql_state="HY000", Mysqlx::Error::Severity severity=Mysqlx::Error::ERROR)
Definition: x_connection.cc:288
 
Function
Definition: x_connection.h:124
 
@ kServerRecvCrudDropViewResponseForward
 
@ kServerRecvCursorCloseResponseForward
 
@ kForwardTlsClientToServer
 
@ kServerRecvCrudUpdateResponse
 
@ kServerRecvCrudDeleteResponseForwardLast
 
@ kServerRecvSwitchTlsResponse
 
@ kServerRecvAuthResponseContinue
 
@ kServerRecvCrudModifyViewResponseForward
 
@ kServerRecvExpectOpenResponse
 
@ kServerRecvCursorOpenResponseForwardLast
 
@ kServerRecvCrudCreateViewResponseForwardLast
 
@ kServerRecvPreparePrepareResponse
 
@ kServerRecvCursorFetchResponseForward
 
@ kServerRecvExpectOpenResponseForward
 
@ kServerRecvCrudFindResponse
 
@ kServerRecvPrepareExecuteResponseForwardLast
 
@ kServerRecvCrudDeleteResponseForward
 
@ kServerRecvCrudUpdateResponseForward
 
@ kServerRecvPrepareDeallocateResponseForward
 
@ kServerRecvPrepareDeallocateResponseForwardLast
 
@ kServerRecvCrudCreateViewResponseForward
 
@ kServerRecvStmtExecuteResponseForwardLast
 
@ kServerRecvPreparePrepareResponseForward
 
@ kServerRecvCursorFetchResponseForwardLast
 
@ kServerRecvSessionCloseResponseForwardLast
 
@ kServerRecvPreparePrepareResponseForwardLast
 
@ kServerRecvCrudDeleteResponse
 
@ kServerRecvCursorCloseResponseForwardLast
 
@ kServerRecvSwitchTlsResponsePassthroughForward
 
@ kServerRecvCapGetResponse
 
@ kServerRecvSwitchTlsResponsePassthrough
 
@ kServerRecvExpectCloseResponseForwardLast
 
@ kServerRecvCrudModifyViewResponseForwardLast
 
@ kServerRecvExpectOpenResponseForwardLast
 
@ kServerRecvCursorCloseResponse
 
@ kServerRecvAuthResponse
 
@ kServerRecvExpectCloseResponseForward
 
@ kServerRecvCapGetResponseForwardLast
 
@ kServerRecvCrudFindResponseForward
 
@ kServerRecvCrudDropViewResponse
 
@ kServerRecvPrepareExecuteResponseForward
 
@ kServerRecvCrudUpdateResponseForwardLast
 
@ kServerRecvCapSetResponseForwardLast
 
@ kServerRecvCrudFindResponseForwardLast
 
@ kServerRecvCrudInsertResponse
 
@ kServerRecvCursorOpenResponseForward
 
@ kServerRecvCheckCapsResponse
 
@ kServerRecvSessionResetResponseForward
 
@ kServerRecvCursorOpenResponse
 
@ kServerRecvSwitchTlsResponsePassthroughForwardOk
 
@ kServerRecvSwitchTlsResponsePassthroughForwardLast
 
@ kServerRecvStmtExecuteResponse
 
@ kServerRecvCrudModifyViewResponse
 
@ kServerRecvExpectCloseResponse
 
@ kForwardTlsServerToClient
 
@ kServerRecvStmtExecuteResponseForward
 
@ kServerRecvCapSetResponse
 
@ kServerRecvCrudInsertResponseForward
 
@ kClientPrepareDeallocate
 
@ kServerRecvSessionCloseResponseForward
 
@ kServerRecvSessionResetResponseForwardLast
 
@ kServerRecvCrudDropViewResponseForwardLast
 
@ kServerRecvCapSetResponseForward
 
@ kServerRecvCapGetResponseForward
 
@ kServerRecvPrepareExecuteResponse
 
@ kServerRecvAuthResponseForward
 
@ kServerRecvAuthResponseForwardLast
 
@ kServerRecvSessionCloseResponse
 
@ kClientRecvAuthContinue
 
@ kServerRecvCursorFetchResponse
 
@ kServerRecvCrudCreateViewResponse
 
@ kServerRecvPrepareDeallocateResponse
 
@ kServerRecvCrudInsertResponseForwardLast
 
@ kServerRecvSessionResetResponse
 
void server_recv_expect_close_response()
Definition: x_connection.cc:2553
 
void server_recv_prepare_deallocate_response_forward_last()
Definition: x_connection.cc:2406
 
void server_recv_prepare_execute_response_forward_last()
Definition: x_connection.cc:2477
 
void server_recv_session_reset_response_forward()
Definition: x_connection.cc:3119
 
void tls_connect_init()
Definition: x_connection.cc:1204
 
bool greeting_from_router_
Definition: x_connection.h:781
 
void client_session_reset()
Definition: x_connection.cc:3068
 
void server_recv_session_close_response_forward_last()
Definition: x_connection.cc:3061
 
routing_guidelines::Server_info get_server_info() const override
Definition: x_connection.h:769
 
void server_recv_prepare_prepare_response_forward_last()
Definition: x_connection.cc:2339
 
void client_expect_close()
Definition: x_connection.cc:2548
 
void server_recv_cap_set_response_forward()
Definition: x_connection.cc:1850
 
void server_recv_cursor_open_response_forward_last()
Definition: x_connection.cc:2865
 
void forward_client_to_server(Function this_func, Function next_func)
Definition: x_connection.cc:687
 
void disconnect() override
Definition: x_connection.cc:247
 
void server_recv_cursor_fetch_response()
Definition: x_connection.cc:2877
 
void server_socket_failed(std::error_code ec)
Definition: x_connection.cc:361
 
const ClientSideConnection & client_conn() const
Definition: x_connection.h:735
 
ServerSideConnection::protocol_state_type & server_protocol()
Definition: x_connection.h:727
 
void server_recv_session_close_response()
Definition: x_connection.cc:3009
 
void async_send_client(Function next)
Definition: x_connection.cc:392
 
void server_recv_cursor_open_response_forward()
Definition: x_connection.cc:2860
 
std::string get_routing_source() const override
Definition: x_connection.h:750
 
void async_send_server_buffer(net::const_buffer send_buf, Function next)
Definition: x_connection.cc:1363
 
void send_server_failed(std::error_code ec)
Definition: x_connection.cc:329
 
void server_recv_server_greeting_from_server()
Definition: x_connection.cc:3132
 
void send_client_failed(std::error_code ec)
Definition: x_connection.cc:345
 
void async_send_client_buffer(net::const_buffer send_buf, Function next)
Definition: x_connection.cc:1345
 
void client_con_close()
Definition: x_connection.cc:303
 
void server_recv_crud_insert_response_forward_last()
Definition: x_connection.cc:2212
 
ClientSideConnection & client_conn()
Definition: x_connection.h:734
 
void server_recv_switch_tls_response_passthrough_forward()
Definition: x_connection.cc:1073
 
void server_recv_cursor_close_response_forward()
Definition: x_connection.cc:2992
 
void forward_tls_client_to_server()
Definition: x_connection.cc:1147
 
void client_session_close()
Definition: x_connection.cc:3004
 
ForwardResult
Definition: x_connection.h:565
 
void client_cursor_close()
Definition: x_connection.cc:2941
 
void server_recv_cursor_fetch_response_forward_last()
Definition: x_connection.cc:2934
 
void client_socket_failed(std::error_code ec)
Definition: x_connection.cc:376
 
void server_recv_prepare_prepare_response()
Definition: x_connection.cc:2287
 
void server_recv_auth_response_forward()
Definition: x_connection.cc:1933
 
void server_recv_auth_response_continue()
Definition: x_connection.cc:1938
 
std::optional< mysql_harness::DestinationEndpoint > destination_endpoint() const override
Definition: x_connection.h:745
 
void tls_accept_finalize()
Definition: x_connection.cc:1629
 
void server_recv_session_reset_response()
Definition: x_connection.cc:3073
 
void server_recv_crud_find_response_forward_last()
Definition: x_connection.cc:2086
 
void server_send_switch_to_tls()
Definition: x_connection.cc:1706
 
void client_send_server_greeting_from_router()
Definition: x_connection.cc:460
 
void client_recv_cmd()
Definition: x_connection.cc:464
 
void forward_tls_init()
Definition: x_connection.cc:1177
 
void client_expect_open()
Definition: x_connection.cc:2485
 
void server_recv_check_caps_response()
Definition: x_connection.cc:1734
 
void server_recv_crud_create_view_response_forward()
Definition: x_connection.cc:2662
 
void server_recv_crud_drop_view_response()
Definition: x_connection.cc:2746
 
void server_send_check_caps()
Definition: x_connection.cc:1721
 
void forward_server_to_client(Function this_func, Function next_func)
Definition: x_connection.cc:721
 
void recv_server_failed(std::error_code ec)
Definition: x_connection.cc:337
 
void server_recv_crud_insert_response_forward()
Definition: x_connection.cc:2207
 
void server_recv_crud_find_response_forward()
Definition: x_connection.cc:2081
 
void server_recv_expect_open_response_forward_last()
Definition: x_connection.cc:2541
 
void server_recv_auth_response()
Definition: x_connection.cc:1884
 
void server_recv_expect_open_response()
Definition: x_connection.cc:2490
 
void done()
Definition: x_connection.cc:3177
 
void tls_connect()
connect server_channel to a TLS server.
Definition: x_connection.cc:1233
 
void client_crud_insert()
Definition: x_connection.cc:2156
 
void set_routing_source(std::string name) override
Definition: x_connection.h:754
 
void server_recv_cursor_open_response()
Definition: x_connection.cc:2810
 
void server_recv_crud_drop_view_response_forward()
Definition: x_connection.cc:2792
 
void server_recv_cursor_fetch_response_forward()
Definition: x_connection.cc:2929
 
void server_recv_cap_set_response()
Definition: x_connection.cc:1804
 
void server_recv_crud_update_response()
Definition: x_connection.cc:2224
 
const ServerSideConnection::protocol_state_type & server_protocol() const
Definition: x_connection.h:730
 
void tls_accept()
accept a TLS handshake.
Definition: x_connection.cc:1579
 
void server_recv_crud_update_response_forward_last()
Definition: x_connection.cc:2275
 
void tls_accept_init()
Definition: x_connection.cc:1559
 
void server_recv_switch_tls_response_passthrough()
Definition: x_connection.cc:1023
 
void server_recv_crud_modify_view_response_forward_last()
Definition: x_connection.cc:2733
 
void client_prepare_prepare()
Definition: x_connection.cc:2282
 
void server_recv_auth_response_forward_last()
Definition: x_connection.cc:1948
 
MysqlRoutingXConnection(MySQLRoutingContext &context, DestinationManager *destination_manager, std::unique_ptr< ConnectionBase > client_connection, std::unique_ptr< RoutingConnectionBase > client_routing_connection, std::function< void(MySQLRoutingConnectionBase *)> remove_callback)
Definition: x_connection.h:72
 
void server_recv_crud_insert_response()
Definition: x_connection.cc:2161
 
void server_recv_session_reset_response_forward_last()
Definition: x_connection.cc:3125
 
ClientSideConnection::protocol_state_type & client_protocol()
Definition: x_connection.h:720
 
clock_type::time_point last_trace_
Definition: x_connection.h:779
 
const connector_type & connector() const
Definition: x_connection.h:784
 
void server_recv_expect_open_response_forward()
Definition: x_connection.cc:2536
 
void server_recv_switch_tls_response_passthrough_forward_ok()
Definition: x_connection.cc:1087
 
void client_cap_set()
client wants to set the capabilities.
Definition: x_connection.cc:1386
 
void server_recv_cursor_close_response_forward_last()
Definition: x_connection.cc:2997
 
void server_recv_crud_update_response_forward()
Definition: x_connection.cc:2270
 
void wait_client_close()
Definition: x_connection.cc:3172
 
void client_crud_find()
Definition: x_connection.cc:2024
 
net::impl::socket::native_handle_type get_client_fd() const override
Definition: x_connection.h:118
 
const ClientSideConnection::protocol_state_type & client_protocol() const
Definition: x_connection.h:723
 
WaitableMonitor< bool > is_completed_
Definition: x_connection.h:791
 
void server_init_tls()
Definition: x_connection.cc:1651
 
void server_recv_prepare_deallocate_response()
Definition: x_connection.cc:2352
 
void finish()
Definition: x_connection.cc:3136
 
void server_recv_crud_delete_response_forward_last()
Definition: x_connection.cc:2149
 
void completed() override
Definition: x_connection.h:762
 
void async_recv_server(Function next)
Definition: x_connection.cc:447
 
void server_recv_crud_create_view_response_forward_last()
Definition: x_connection.cc:2668
 
void server_recv_crud_create_view_response()
Definition: x_connection.cc:2616
 
std::shared_ptr< MysqlRoutingXConnection > getptr()
Definition: x_connection.h:105
 
void wait_until_completed() override
Definition: x_connection.h:758
 
void server_recv_prepare_prepare_response_forward()
Definition: x_connection.cc:2333
 
void server_recv_prepare_execute_response()
Definition: x_connection.cc:2419
 
void server_recv_crud_modify_view_response()
Definition: x_connection.cc:2681
 
void client_prepare_deallocate()
Definition: x_connection.cc:2347
 
connector_type & connector()
Definition: x_connection.h:783
 
void async_recv_client(Function next)
Definition: x_connection.cc:413
 
void server_recv_stmt_execute_response()
Definition: x_connection.cc:1960
 
void client_crud_delete()
Definition: x_connection.cc:2093
 
clock_type::time_point started_
Definition: x_connection.h:778
 
typename base_class_::protocol_state_type protocol_state_type
Definition: basic_protocol_splicer.h:91
 
protocol_state_type & protocol()
Definition: connection_base.h:399
 
std::unique_ptr< ConnectionBase > & connection()
Definition: connection_base.h:405
 
net::impl::socket::native_handle_type native_handle() const
Definition: connection_base.h:368
 
SslMode ssl_mode() const
Definition: connection_base.h:364
 
Monitor can be waited for.
Definition: monitor.h:62
 
Definition: x_connection.h:40
 
std::optional< uint8_t > msg_type_
Definition: x_connection.h:57
 
std::optional< FrameInfo > & current_frame()
Definition: x_connection.h:47
 
Mysqlx::Connection::Capabilities * caps()
Definition: x_connection.h:50
 
std::optional< FrameInfo > current_frame_
Definition: x_connection.h:56
 
void caps(std::unique_ptr< Mysqlx::Connection::Capabilities > caps)
Definition: x_connection.h:51
 
std::unique_ptr< Mysqlx::Connection::Capabilities > caps_
Definition: x_connection.h:59
 
std::optional< uint8_t > & current_msg_type()
Definition: x_connection.h:48
 
int native_handle_type
Definition: socket_constants.h:51
 
Definition: gcs_xcom_synode.h:64
 
SslMode
Definition: ssl_mode.h:29
 
case opt name
Definition: sslopt-case.h:29
 
Capabilities.
Definition: mysqlx_connection.proto:53
 
Severity
Definition: mysqlx.proto:279
 
@ ERROR
Definition: mysqlx.proto:280
 
Definition: x_connection.h:42
 
size_t frame_size_
size of the whole frame
Definition: x_connection.h:43
 
size_t forwarded_frame_size_
size of the forwarded part of frame
Definition: x_connection.h:44
 
Information about one server destination.
Definition: routing_guidelines.h:80