MySQL 8.4.0
Source Code Documentation
ClientGreetor Class Reference

classic protocol handshake between client<->router (and router<->server). More...

#include <classic_greeting_receiver.h>

Inheritance diagram for ClientGreetor:
[legend]

Public Types

enum class  Stage {
  Init , ServerGreeting , ServerFirstGreeting , ClientGreeting ,
  TlsAcceptInit , TlsAccept , ClientGreetingAfterTls , RequestPlaintextPassword ,
  PlaintextPassword , DecryptPassword , Accepted , Authenticated ,
  Error , Ok
}
 stages of the handshake flow. More...
 
- Public Types inherited from BasicProcessor
enum class  Result {
  Again , RecvFromClient , SendToClient , RecvFromServer ,
  RecvFromBoth , SendToServer , SendableToServer , Suspend ,
  Done , Void
}
 

Public Member Functions

stdx::expected< Result, std::error_code > process () override
 
void stage (Stage stage)
 
Stage stage () const
 
- Public Member Functions inherited from Processor
 BasicProcessor (MysqlRoutingClassicConnectionBase *conn)
 
- Public Member Functions inherited from BasicProcessor
 BasicProcessor (MysqlRoutingClassicConnectionBase *conn)
 
virtual ~BasicProcessor ()=default
 
const MysqlRoutingClassicConnectionBaseconnection () const
 
MysqlRoutingClassicConnectionBaseconnection ()
 

Private Member Functions

stdx::expected< Result, std::error_code > init ()
 
stdx::expected< Result, std::error_code > server_greeting ()
 client<-router: server::greeting. More...
 
stdx::expected< Result, std::error_code > server_first_greeting ()
 client<-router: server::greeting. More...
 
stdx::expected< Result, std::error_code > client_greeting ()
 handle client greeting. More...
 
stdx::expected< Result, std::error_code > tls_accept_init ()
 
stdx::expected< Result, std::error_code > tls_accept ()
 
stdx::expected< Result, std::error_code > client_greeting_after_tls ()
 
stdx::expected< Result, std::error_code > request_plaintext_password ()
 
stdx::expected< Result, std::error_code > plaintext_password ()
 receive the client's plaintext password. More...
 
stdx::expected< Result, std::error_code > decrypt_password ()
 
stdx::expected< Result, std::error_code > accepted ()
 
stdx::expected< Result, std::error_code > authenticated ()
 
stdx::expected< Result, std::error_code > error ()
 

Private Attributes

Stage stage_ {Stage::Init}
 
classic_protocol::message::server::Error connect_err_ {}
 

Additional Inherited Members

- 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)
 
Tracertracer ()
 
TraceEventtrace_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...
 
TraceEventtrace_command (const std::string_view &prefix)
 start a command span. More...
 
TraceEventtrace_connect_and_forward_command (TraceEvent *parent_span)
 start a connect-and-forward span. More...
 
TraceEventtrace_connect (TraceEvent *parent_span)
 start a connect span. More...
 
void trace_set_connection_attributes (TraceEvent *ev)
 start a connect span. More...
 
TraceEventtrace_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 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...
 

Detailed Description

classic protocol handshake between client<->router (and router<->server).

Member Enumeration Documentation

◆ Stage

enum class ClientGreetor::Stage
strong

stages of the handshake flow.

Enumerator
Init 
ServerGreeting 
ServerFirstGreeting 
ClientGreeting 
TlsAcceptInit 
TlsAccept 
ClientGreetingAfterTls 
RequestPlaintextPassword 
PlaintextPassword 
DecryptPassword 
Accepted 
Authenticated 
Error 
Ok 

Member Function Documentation

◆ accepted()

stdx::expected< Processor::Result, std::error_code > ClientGreetor::accepted ( )
private

◆ authenticated()

stdx::expected< Processor::Result, std::error_code > ClientGreetor::authenticated ( )
private

◆ client_greeting()

stdx::expected< Processor::Result, std::error_code > ClientGreetor::client_greeting ( )
private

handle client greeting.

◆ client_greeting_after_tls()

stdx::expected< Processor::Result, std::error_code > ClientGreetor::client_greeting_after_tls ( )
private

◆ decrypt_password()

stdx::expected< Processor::Result, std::error_code > ClientGreetor::decrypt_password ( )
private

◆ error()

stdx::expected< Processor::Result, std::error_code > ClientGreetor::error ( )
private

◆ init()

stdx::expected< Processor::Result, std::error_code > ClientGreetor::init ( )
private

◆ plaintext_password()

stdx::expected< Processor::Result, std::error_code > ClientGreetor::plaintext_password ( )
private

receive the client's plaintext password.

after client_send_request_for_plaintext_password()

◆ process()

stdx::expected< Processor::Result, std::error_code > ClientGreetor::process ( )
overridevirtual

Implements BasicProcessor.

◆ request_plaintext_password()

stdx::expected< Processor::Result, std::error_code > ClientGreetor::request_plaintext_password ( )
private

◆ server_first_greeting()

stdx::expected< Processor::Result, std::error_code > ClientGreetor::server_first_greeting ( )
private

client<-router: server::greeting.

◆ server_greeting()

stdx::expected< Processor::Result, std::error_code > ClientGreetor::server_greeting ( )
private

client<-router: server::greeting.

◆ stage() [1/2]

Stage ClientGreetor::stage ( ) const
inline

◆ stage() [2/2]

void ClientGreetor::stage ( Stage  stage)
inline

◆ tls_accept()

stdx::expected< Processor::Result, std::error_code > ClientGreetor::tls_accept ( )
private

◆ tls_accept_init()

stdx::expected< Processor::Result, std::error_code > ClientGreetor::tls_accept_init ( )
private

Member Data Documentation

◆ connect_err_

classic_protocol::message::server::Error ClientGreetor::connect_err_ {}
private

◆ stage_

Stage ClientGreetor::stage_ {Stage::Init}
private

The documentation for this class was generated from the following files: