MySQL 9.0.0
Source Code Documentation
QuitForwarder Class Reference

#include <classic_quit_forwarder.h>

Inheritance diagram for QuitForwarder:
[legend]

Public Types

enum class  Stage {
  Command , ServerTlsShutdownFirst , ServerShutdownSend , ServerTlsShutdownResponse ,
  ClientTlsShutdownFirst , ClientShutdownSend , ClientTlsShutdownResponse , Done
}
 
- 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
 forward the quit message flow. More...
 
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 > command ()
 
stdx::expected< Result, std::error_code > server_tls_shutdown_first ()
 
stdx::expected< Result, std::error_code > server_shutdown_send ()
 
stdx::expected< Result, std::error_code > server_tls_shutdown_response ()
 
stdx::expected< Result, std::error_code > client_tls_shutdown_first ()
 
stdx::expected< Result, std::error_code > client_shutdown_send ()
 
stdx::expected< Result, std::error_code > client_tls_shutdown_response ()
 

Private Attributes

Stage stage_ {Stage::Command}
 

Additional Inherited Members

- Static Public Attributes inherited from ForwardingProcessor
static constexpr const std::chrono::milliseconds kConnectRetryInterval
 interval between connect-retries. More...
 
- Protected Member Functions inherited from ForwardingProcessor
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)
 
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 ForwardingProcessor
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...
 

Member Enumeration Documentation

◆ Stage

enum class QuitForwarder::Stage
strong
Enumerator
Command 
ServerTlsShutdownFirst 
ServerShutdownSend 
ServerTlsShutdownResponse 
ClientTlsShutdownFirst 
ClientShutdownSend 
ClientTlsShutdownResponse 
Done 

Member Function Documentation

◆ client_shutdown_send()

stdx::expected< Processor::Result, std::error_code > QuitForwarder::client_shutdown_send ( )
private

◆ client_tls_shutdown_first()

stdx::expected< Processor::Result, std::error_code > QuitForwarder::client_tls_shutdown_first ( )
private

◆ client_tls_shutdown_response()

stdx::expected< Processor::Result, std::error_code > QuitForwarder::client_tls_shutdown_response ( )
private

◆ command()

stdx::expected< Processor::Result, std::error_code > QuitForwarder::command ( )
private

◆ process()

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

forward the quit message flow.

Expected overall flow:

c->r: COM_QUIT
alt can not be pooled
r->s: COM_QUIT
else
r->s: (add to pool)
c<-r: (close)
@ COM_QUIT
See COM_QUIT.
Definition: my_command.h:54
stdx::expected< void, std::error_code > close(file_handle_type native_handle)
close file handle.
Definition: file.h:239
static mysql_service_status_t add(reference_caching_channel channel, const char *implementation_name) noexcept
Definition: component.cc:127
Cursor end()
A past-the-end Cursor.
Definition: rules_table_service.cc:192
const mysql_service_registry_t * r
Definition: pfs_example_plugin_employee.cc:86

It is no error, if there is no server-connection.

Implements BasicProcessor.

◆ server_shutdown_send()

stdx::expected< Processor::Result, std::error_code > QuitForwarder::server_shutdown_send ( )
private

◆ server_tls_shutdown_first()

stdx::expected< Processor::Result, std::error_code > QuitForwarder::server_tls_shutdown_first ( )
private

◆ server_tls_shutdown_response()

stdx::expected< Processor::Result, std::error_code > QuitForwarder::server_tls_shutdown_response ( )
private

◆ stage() [1/2]

Stage QuitForwarder::stage ( ) const
inline

◆ stage() [2/2]

void QuitForwarder::stage ( Stage  stage)
inline

Member Data Documentation

◆ stage_

Stage QuitForwarder::stage_ {Stage::Command}
private

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