Class StandardSocketFactory

java.lang.Object
com.mysql.jdbc.StandardSocketFactory
All Implemented Interfaces:
SocketFactory, SocketMetadata
Direct Known Subclasses:
SocksProxySocketFactory

public class StandardSocketFactory extends Object implements SocketFactory, SocketMetadata
Socket factory for vanilla TCP/IP sockets (the standard)
  • Field Details

    • TCP_NO_DELAY_PROPERTY_NAME

      public static final String TCP_NO_DELAY_PROPERTY_NAME
      See Also:
    • TCP_KEEP_ALIVE_DEFAULT_VALUE

      public static final String TCP_KEEP_ALIVE_DEFAULT_VALUE
      See Also:
    • TCP_KEEP_ALIVE_PROPERTY_NAME

      public static final String TCP_KEEP_ALIVE_PROPERTY_NAME
      See Also:
    • TCP_RCV_BUF_PROPERTY_NAME

      public static final String TCP_RCV_BUF_PROPERTY_NAME
      See Also:
    • TCP_SND_BUF_PROPERTY_NAME

      public static final String TCP_SND_BUF_PROPERTY_NAME
      See Also:
    • TCP_TRAFFIC_CLASS_PROPERTY_NAME

      public static final String TCP_TRAFFIC_CLASS_PROPERTY_NAME
      See Also:
    • TCP_RCV_BUF_DEFAULT_VALUE

      public static final String TCP_RCV_BUF_DEFAULT_VALUE
      See Also:
    • TCP_SND_BUF_DEFAULT_VALUE

      public static final String TCP_SND_BUF_DEFAULT_VALUE
      See Also:
    • TCP_TRAFFIC_CLASS_DEFAULT_VALUE

      public static final String TCP_TRAFFIC_CLASS_DEFAULT_VALUE
      See Also:
    • TCP_NO_DELAY_DEFAULT_VALUE

      public static final String TCP_NO_DELAY_DEFAULT_VALUE
      See Also:
    • host

      protected String host
      The hostname to connect to
    • port

      protected int port
      The port number to connect to
    • rawSocket

      protected Socket rawSocket
      The underlying TCP/IP socket to use
    • loginTimeoutCountdown

      protected int loginTimeoutCountdown
      The remaining login time in milliseconds. Initial value set from defined DriverManager.setLoginTimeout()
    • loginTimeoutCheckTimestamp

      protected long loginTimeoutCheckTimestamp
      Time when last Login Timeout check occurred
    • socketTimeoutBackup

      protected int socketTimeoutBackup
      Backup original Socket timeout to be restored after handshake
  • Constructor Details

    • StandardSocketFactory

      public StandardSocketFactory()
  • Method Details

    • afterHandshake

      public Socket afterHandshake() throws SocketException, IOException
      Called by the driver after issuing the MySQL protocol handshake and reading the results of the handshake.
      Specified by:
      afterHandshake in interface SocketFactory
      Returns:
      The socket to use after the handshake
      Throws:
      SocketException - if a socket error occurs
      IOException - if an I/O error occurs
    • beforeHandshake

      public Socket beforeHandshake() throws SocketException, IOException
      Called by the driver before issuing the MySQL protocol handshake. Should return the socket instance that should be used during the handshake.
      Specified by:
      beforeHandshake in interface SocketFactory
      Returns:
      the socket to use before the handshake
      Throws:
      SocketException - if a socket error occurs
      IOException - if an I/O error occurs
    • createSocket

      protected Socket createSocket(Properties props)
      Create the raw socket.
      Parameters:
      props - properties available to affect behavior during socket creation.
    • connect

      public Socket connect(String hostname, int portNumber, Properties props) throws SocketException, IOException
      Description copied from interface: SocketFactory
      Creates a new socket using the given properties. Properties are parsed by the driver from the URL. All properties other than sensitive ones (user and password) are passed to this method. The driver will instantiate the socket factory with the class name given in the property "socketFactory", where the standard is com.mysql.jdbc.StandardSocketFactory Implementing classes are responsible for handling synchronization of this method (if needed).
      Specified by:
      connect in interface SocketFactory
      Parameters:
      hostname - the hostname passed in the JDBC URL. It will be a single hostname, as the driver parses multi-hosts (for failover) and calls this method for each host connection attempt.
      portNumber - the port number to connect to (if required).
      props - properties passed to the driver via the URL and/or properties instance.
      Returns:
      a socket connected to the given host
      Throws:
      SocketException - if a socket error occurs
      IOException - if an I/O error occurs
      See Also:
      • invalid reference
        com.mysql.jdbc.SocketFactory#createSocket(Properties)
    • isLocallyConnected

      public boolean isLocallyConnected(ConnectionImpl conn) throws SQLException
      Specified by:
      isLocallyConnected in interface SocketMetadata
      Throws:
      SQLException
    • resetLoginTimeCountdown

      protected void resetLoginTimeCountdown() throws SocketException
      Decrements elapsed time since last reset from login timeout count down.
      Throws:
      SocketException - If the login timeout is reached or exceeded.
    • getRealTimeout

      protected int getRealTimeout(int expectedTimeout)
      Validates the connection/socket timeout that must really be used.
      Parameters:
      expectedTimeout - The timeout to validate.
      Returns:
      The timeout to be used.