Class AbstractClientProxyConnector

java.lang.Object
org.eclipse.jgit.internal.transport.sshd.proxy.AbstractClientProxyConnector
All Implemented Interfaces:
org.apache.sshd.client.session.ClientProxyConnector, StatefulProxyConnector
Direct Known Subclasses:
HttpClientConnector, Socks5ClientConnector

public abstract class AbstractClientProxyConnector extends Object implements StatefulProxyConnector
Basic common functionality for a StatefulProxyConnector.
  • Field Details

    • DEFAULT_PROXY_TIMEOUT_MILLIS

      private static final long DEFAULT_PROXY_TIMEOUT_MILLIS
    • lock

      private Object lock
    • done

      private boolean done
    • bufferedCommands

      private List<Callable<Void>> bufferedCommands
    • unregister

      private AtomicReference<Runnable> unregister
    • remainingProxyProtocolTime

      private long remainingProxyProtocolTime
    • lastProxyOperationTime

      private long lastProxyOperationTime
    • remoteAddress

      protected final InetSocketAddress remoteAddress
      The ultimate remote address to connect to.
    • proxyAddress

      protected final InetSocketAddress proxyAddress
      The proxy address.
    • proxyUser

      protected String proxyUser
      The user to authenticate at the proxy with.
    • proxyPassword

      protected char[] proxyPassword
      The password to use for authentication at the proxy.
  • Constructor Details

    • AbstractClientProxyConnector

      public AbstractClientProxyConnector(@NonNull InetSocketAddress proxyAddress, @NonNull InetSocketAddress remoteAddress, String proxyUser, char[] proxyPassword)
      Parameters:
      proxyAddress - of the proxy server we're connecting to
      remoteAddress - of the target server to connect to
      proxyUser - to authenticate at the proxy with; may be null
      proxyPassword - to authenticate at the proxy with; may be null
  • Method Details

    • init

      protected void init(org.apache.sshd.client.session.ClientSession session)
      Initializes this instance. Installs itself as proxy handler on the session.
      Parameters:
      session - to initialize for
    • getTimeout

      protected long getTimeout()
      Obtains the timeout for the whole rest of the proxy connection protocol.
      Returns:
      the timeout in milliseconds, always > 0L
    • adjustTimeout

      protected void adjustTimeout()
      Adjusts the timeout calculation to not account of elapsed time since the last time the timeout was gotten. Can be used for instance to ignore time spent in user dialogs be counted against the overall proxy connection protocol timeout.
    • setDone

      protected void setDone(boolean success) throws Exception
      Sets the "done" flag.
      Parameters:
      success - whether the connector terminated successfully.
      Throws:
      Exception - if starting ssh fails
    • runWhenDone

      public void runWhenDone(Callable<Void> starter) throws Exception
      Description copied from interface: StatefulProxyConnector
      Runs command once the proxy connection is established. May be called multiple times; commands are run sequentially. If the proxy connection is already established, command is executed directly synchronously.
      Specified by:
      runWhenDone in interface StatefulProxyConnector
      Parameters:
      starter - operation to run
      Throws:
      Exception - if the operation is run synchronously and throws an exception
    • clearPassword

      protected void clearPassword()
      Clears the proxy password.