java.lang.Object
org.eclipse.jgit.transport.sshd.agent.AbstractConnector
org.eclipse.jgit.internal.transport.sshd.agent.connector.WinPipeConnector
All Implemented Interfaces:
Closeable, AutoCloseable, Connector

public class WinPipeConnector extends AbstractConnector
A connector based on JNA using Windows' named pipes to communicate with an ssh agent. This is used by Microsoft's Win32-OpenSSH port.
  • Field Details

  • Constructor Details

    • WinPipeConnector

      public WinPipeConnector(String pipeName)
      Creates a WinPipeConnector for the given named pipe.
      Parameters:
      pipeName - to connect to
  • Method Details

    • connect

      public boolean connect() throws IOException
      Description copied from interface: Connector
      Connects to an SSH agent if there is one running. If called when already connected just returns true.
      Returns:
      true if an SSH agent is available and connected, if no SSH agent is available
      Throws:
      IOException - if connecting to the SSH agent failed
    • close

      public void close() throws IOException
      Throws:
      IOException
    • rpc

      public byte[] rpc(byte command, byte[] message) throws IOException
      Description copied from interface: Connector
      Performs a remote call to the SSH agent and returns the result.
      Parameters:
      command - to send
      message - to send; must have at least 5 bytes, and must have 5 unused bytes at the front.
      Returns:
      the result received
      Throws:
      IOException - if an error occurs
    • writeFully

      private void writeFully(LibraryHolder libs, com.sun.jna.platform.win32.WinNT.HANDLE file, byte[] message) throws IOException
      Throws:
      IOException
    • readFully

      private void readFully(LibraryHolder libs, com.sun.jna.platform.win32.WinNT.HANDLE file, byte[] data) throws IOException
      Throws:
      IOException
    • read

      private int read(LibraryHolder libs, com.sun.jna.platform.win32.WinNT.HANDLE file, byte[] buffer, int offset, int length) throws IOException
      Throws:
      IOException