![]()  | 
  
    MySQL 9.5.0
    
   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().