MySQL 8.4.2
Source Code Documentation
|
a processor base class with helper functions. More...
#include <forwarding_processor.h>
Static Public Attributes | |
static constexpr const std::chrono::milliseconds | kConnectRetryInterval |
interval between connect-retries. More... | |
Protected Member Functions | |
stdx::expected< Result, std::error_code > | forward_server_to_client (bool noflush=false) |
forward the current packet from the server-side to the client-side. More... | |
stdx::expected< Result, std::error_code > | forward_client_to_server (bool noflush=false) |
forward the current packet from the client-side to the server-side. More... | |
stdx::expected< Processor::Result, std::error_code > | skip_or_inject_end_of_columns (bool no_flush=false) |
adjust the end-of-columns packet. More... | |
stdx::expected< bool, std::error_code > | pool_server_connection () |
move the server connection to the pool. More... | |
stdx::expected< Processor::Result, std::error_code > | socket_reconnect_start (TraceEvent *parent_event) |
reconnect a socket. More... | |
stdx::expected< Processor::Result, std::error_code > | mysql_reconnect_start (TraceEvent *parent_event) |
reconnect a mysql classic connection. More... | |
stdx::expected< Result, std::error_code > | recv_server_failed_and_check_client_socket (std::error_code ec) |
handle error-code of a failed receive() from the server-socket and check the status of the client socket. More... | |
stdx::expected< Processor::Result, std::error_code > | reconnect_send_error_msg (Channel &src_channel, ClassicProtocolState &src_protocol) |
send a Error msg based on the reconnect_error(). More... | |
template<class Proto > | |
stdx::expected< Processor::Result, std::error_code > | reconnect_send_error_msg (TlsSwitchableConnection< Proto > &conn) |
void | reconnect_error (classic_protocol::message::server::Error err) |
set the reconnect error. More... | |
classic_protocol::message::server::Error | reconnect_error () const |
get the reconnect error. More... | |
Protected Member Functions inherited from Processor | |
stdx::expected< Result, std::error_code > | send_server_failed (std::error_code ec) |
stdx::expected< Result, std::error_code > | recv_server_failed (std::error_code ec) |
stdx::expected< Result, std::error_code > | send_client_failed (std::error_code ec) |
stdx::expected< Result, std::error_code > | recv_client_failed (std::error_code ec) |
stdx::expected< Result, std::error_code > | server_socket_failed (std::error_code ec) |
stdx::expected< Result, std::error_code > | client_socket_failed (std::error_code ec) |
stdx::expected< void, std::error_code > | discard_current_msg (Channel &src_channel, ClassicProtocolState &src_protocol) |
discard to current message. More... | |
template<class Proto > | |
stdx::expected< void, std::error_code > | discard_current_msg (TlsSwitchableConnection< Proto > &conn) |
void | trace (Tracer::Event e) |
Tracer & | tracer () |
TraceEvent * | trace_span (TraceEvent *parent_span, const std::string_view &prefix) |
start a span. More... | |
void | trace_span_end (TraceEvent *event, TraceEvent::StatusCode status_code=TraceEvent::StatusCode::kUnset) |
end a span and set a status-code. More... | |
TraceEvent * | trace_command (const std::string_view &prefix) |
start a command span. More... | |
TraceEvent * | trace_connect_and_forward_command (TraceEvent *parent_span) |
start a connect-and-forward span. More... | |
TraceEvent * | trace_connect (TraceEvent *parent_span) |
start a connect span. More... | |
void | trace_set_connection_attributes (TraceEvent *ev) |
start a connect span. More... | |
TraceEvent * | trace_forward_command (TraceEvent *parent_span) |
start a forward span. More... | |
void | trace_command_end (TraceEvent *event, TraceEvent::StatusCode status_code=TraceEvent::StatusCode::kUnset) |
end a command span and set a status-code. More... | |
Static Protected Member Functions | |
template<class T > | |
static bool | message_can_be_forwarded_as_is (ClassicProtocolState &src_protocol, ClassicProtocolState &dst_protocol, const T &msg) |
check of the capabilities of the source and the destination are the same for this message. More... | |
static bool | connect_error_is_transient (const classic_protocol::message::server::Error &err) |
check if the error is a transient error. More... | |
Static Protected Member Functions inherited from Processor | |
static void | log_fatal_error_code (const char *msg, std::error_code ec) |
log a message with error-code as error. More... | |
Private Attributes | |
classic_protocol::message::server::Error | reconnect_error_ {} |
reconnect error set by lazy_reconnect_start(). More... | |
Additional Inherited Members | |
Public Types inherited from BasicProcessor | |
enum class | Result { Again , RecvFromClient , SendToClient , RecvFromServer , RecvFromBoth , SendToServer , SendableToServer , Suspend , Done , Void } |
Public Member Functions inherited from Processor | |
BasicProcessor (MysqlRoutingClassicConnectionBase *conn) | |
Public Member Functions inherited from BasicProcessor | |
BasicProcessor (MysqlRoutingClassicConnectionBase *conn) | |
virtual | ~BasicProcessor ()=default |
const MysqlRoutingClassicConnectionBase * | connection () const |
MysqlRoutingClassicConnectionBase * | connection () |
virtual stdx::expected< Result, std::error_code > | process ()=0 |
a processor base class with helper functions.
|
staticprotected |
check if the error is a transient error.
|
protected |
forward the current packet from the client-side to the server-side.
Pushes a ClientToServerForwarder to the processor-stack.
noflush | if true, it isn't required to wait until the packet is sent to the server. |
|
protected |
forward the current packet from the server-side to the client-side.
use 'noflush' if the next message is from the server side too to allow merging of multiple server-side packets into one "send-to-client".
Useful for resultsets which is split into multiple packets.
Pushes a ServerToClientForwarder to the processor-stack.
noflush | if true, it isn't required to wait until the packet is sent to the client. |
|
inlinestaticprotected |
check of the capabilities of the source and the destination are the same for this message.
src_protocol | the source protocol state |
dst_protocol | the destination protocol state |
msg | the message that shall be forwarded |
true | if the msg can be forwarded as is. |
|
protected |
reconnect a mysql classic connection.
pushes a LazyConnector on the processor stack.
when finished, a mysql connection is authenticated.
|
protected |
move the server connection to the pool.
|
inlineprotected |
get the reconnect error.
|
inlineprotected |
set the reconnect error.
may be called from handlers.
|
protected |
send a Error msg based on the reconnect_error().
Result::SendToClient | on success. |
|
inlineprotected |
|
protected |
handle error-code of a failed receive() from the server-socket and check the status of the client socket.
|
protected |
adjust the end-of-columns packet.
if source and destination don't have the same CLIENT_DEPRECATE_EOF, the Eof packet has to be add/removed between columns and rows.
no_flush | if the packet is forwarded, don't force a send as there is more data coming. |
|
protected |
reconnect a socket.
pushes a ConnectProcessor on the processor stack.
when finished, a socket is established.
Result::Again | on success. |
|
staticconstexpr |
interval between connect-retries.
|
private |
reconnect error set by lazy_reconnect_start().