Package py4j

Class GatewayConnection

java.lang.Object
py4j.GatewayConnection
All Implemented Interfaces:
Runnable, Py4JServerConnection

public class GatewayConnection extends Object implements Runnable, Py4JServerConnection

Manage the connection between a Python program and a Gateway. A GatewayConnection lives in its own thread and is created on demand (e.g., one per concurrent thread).

The request to connect to the JVM goes through the GatewayServer first and is then passed to a GatewayConnection.

This class is not intended to be directly accessed by users.

Author:
Barthelemy Dagenais
  • Field Details

  • Constructor Details

  • Method Details

    • getBaseCommands

      public static List<Class<? extends Command>> getBaseCommands()
      Returns:
      The list of base commands that are provided by default. Can be hidden by custom commands with the same command id by passing a list of custom commands to the GatewayServer.
    • startConnection

      public void startConnection()

      Wraps the GatewayConnection in a thread and start the thread.

    • fireConnectionStopped

      protected void fireConnectionStopped()
    • getSocket

      public Socket getSocket()
      Specified by:
      getSocket in interface Py4JServerConnection
      Returns:
      The socket used by this gateway connection.
    • initCommands

      protected void initCommands(Gateway gateway, List<Class<? extends Command>> commandsClazz)

      Override this method to initialize custom commands.

      Parameters:
      gateway -
    • quietSendFatalError

      protected void quietSendFatalError(BufferedWriter writer, Throwable exception)
    • run

      public void run()
      Specified by:
      run in interface Runnable
    • shutdown

      public void shutdown()
      Specified by:
      shutdown in interface Py4JServerConnection
    • shutdown

      public void shutdown(boolean reset)

      Shuts down the connection by closing the socket, the writer, and the reader.

      Internal: emits a connection stopped signal so GatewayServer can remove the connection from the connections list. In rare occasions, the shutdown method may be called twice (when the server shuts down at the same time as the connection fails and shuts down).

      Specified by:
      shutdown in interface Py4JServerConnection