![]() |
MySQL 8.0.41
Source Code Documentation
|
classic protocol handshake between client<->router and router<->server. More...
#include <classic_greeting_forwarder.h>
Public Types | |
enum class | Stage { ServerGreeting , ServerGreetingError , ServerGreetingGreeting , ClientGreeting , ClientGreetingStartTls , ClientGreetingFull , TlsConnectInit , TlsConnect , ClientGreetingAfterTls , InitialResponse , FinalResponse , AuthOk , AuthError , ServerGreetingSent , Error , Ok } |
stages of the handshake flow. More... | |
![]() | |
enum class | Result { Again , RecvFromClient , SendToClient , RecvFromServer , RecvFromBoth , SendToServer , SendableToServer , Suspend , Done , Void } |
Public Member Functions | |
ServerGreetor (MysqlRoutingClassicConnectionBase *conn, bool in_handshake, std::function< void(const classic_protocol::message::server::Error &)> on_error) | |
construct a server::greeting processor. More... | |
stdx::expected< Result, std::error_code > | process () override |
void | stage (Stage stage) |
Stage | stage () const |
![]() | |
BasicProcessor (MysqlRoutingClassicConnectionBase *conn) | |
![]() | |
BasicProcessor (MysqlRoutingClassicConnectionBase *conn) | |
virtual | ~BasicProcessor ()=default |
const MysqlRoutingClassicConnectionBase * | connection () const |
MysqlRoutingClassicConnectionBase * | connection () |
Private Member Functions | |
stdx::expected< Result, std::error_code > | server_greeting () |
stdx::expected< Result, std::error_code > | server_greeting_greeting () |
received a server::greeting from the server. More... | |
stdx::expected< Result, std::error_code > | server_greeting_error () |
received an server::error from the server. More... | |
stdx::expected< Result, std::error_code > | client_greeting () |
stdx::expected< Result, std::error_code > | client_greeting_start_tls () |
stdx::expected< Result, std::error_code > | client_greeting_full () |
send a non-TLS client greeting to the server. More... | |
stdx::expected< Result, std::error_code > | tls_connect_init () |
stdx::expected< Result, std::error_code > | tls_connect () |
stdx::expected< Result, std::error_code > | client_greeting_after_tls () |
a TLS client greeting. More... | |
stdx::expected< Result, std::error_code > | initial_response () |
stdx::expected< Result, std::error_code > | final_response () |
stdx::expected< Result, std::error_code > | auth_error () |
router<-server: auth error. More... | |
stdx::expected< Result, std::error_code > | auth_ok () |
server-side: auth is ok. More... | |
stdx::expected< Result, std::error_code > | error () |
void | client_greeting_server_adjust_caps (ClassicProtocolState *src_protocol, ClassicProtocolState *dst_protocol) |
Private Attributes | |
bool | in_handshake_ |
Stage | stage_ {Stage::ServerGreeting} |
std::function< void(const classic_protocol::message::server::Error &err)> | on_error_ |
Additional Inherited Members | |
![]() | |
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< 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 () |
reconnect a socket. More... | |
stdx::expected< Processor::Result, std::error_code > | mysql_reconnect_start () |
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... | |
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... | |
![]() | |
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... | |
void | trace (Tracer::Event e) |
Tracer & | tracer () |
![]() | |
static void | log_fatal_error_code (const char *msg, std::error_code ec) |
log a message with error-code as error. More... | |
classic protocol handshake between client<->router and router<->server.
|
strong |
stages of the handshake flow.
|
inline |
construct a server::greeting processor.
c->r : ... r->s: connect() r<-s: server::greeting
a server greeting may be sent as part of the initial connection setup between client<->router<->server (in_handshake=true) or when router starts a connection on its own.
If in_handshake
is true, the ServerGreetor expects it can send:
to the client connection.
conn | the connection the greeting will be transferred on. |
in_handshake | true if the greeting is part of the initial handshake. |
on_error | callback called on failure. |
|
private |
router<-server: auth error.
|
private |
server-side: auth is ok.
|
private |
|
private |
a TLS client greeting.
|
private |
send a non-TLS client greeting to the server.
|
private |
|
private |
|
private |
|
private |
|
private |
|
overridevirtual |
Implements BasicProcessor.
|
private |
|
private |
received an server::error from the server.
forward it to the client and close the connection.
|
private |
received a server::greeting from the server.
decode it.
|
inline |
|
inline |
|
private |
|
private |
|
private |
|
private |
|
private |