SshCache
Date: 2014-12-13

org.apache.ivy.plugins.repository.ssh

## Class SshCache

- java.lang.Object
- - org.apache.ivy.plugins.repository.ssh.SshCache

-     public final class SshCache
      extends java.lang.Object

  a class to cache SSH Connections and Channel for the SSH Repository each session is defined by connecting user / host / port two maps are used to find cache entries one map is using the above keys, the other uses the session itself

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `attachChannelSftp(Session session, ChannelSftp channel)` attaches a channelSftp to an existing session cache entry
    `void` | `clearSession(Session session)` discardes session entries from the cache
    `ChannelSftp` | `getChannelSftp(Session session)` retrieves an sftp channel from the cache
    `static SshCache` | `getInstance()`
    `Session` | `getSession(java.lang.String host, int port, java.lang.String username, java.lang.String userPassword, java.io.File pemFile, java.lang.String pemPassword, java.io.File passFile, boolean allowedAgentUse)` Gets a session from the cache or establishes a new session if necessary

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Method Detail

    - #### getInstance

          public static SshCache getInstance()

    - #### clearSession

          public void clearSession(Session session)

      discardes session entries from the cache
      Parameters:
        `session` - to clear

    - #### getChannelSftp

          public ChannelSftp getChannelSftp(Session session)
                                     throws java.io.IOException

      retrieves an sftp channel from the cache
      Parameters:
        `session` - to connect to
      Returns:
        channelSftp or null if not successful (channel not existent or dead)
      Throws:
        `java.io.IOException`

    - #### attachChannelSftp

          public void attachChannelSftp(Session session,
                               ChannelSftp channel)

      attaches a channelSftp to an existing session cache entry
      Parameters:
        `session` - to attach the channel to
        `channel` - channel to attach

    - #### getSession

          public Session getSession(java.lang.String host,
                           int port,
                           java.lang.String username,
                           java.lang.String userPassword,
                           java.io.File pemFile,
                           java.lang.String pemPassword,
                           java.io.File passFile,
                           boolean allowedAgentUse)
                             throws java.io.IOException

      Gets a session from the cache or establishes a new session if necessary
      Parameters:
        `host` - to connect to
        `port` - to use for session (-1 == use standard port)
        `username` - for the session to use
        `userPassword` - to use for authentication (optional)
        `pemFile` - File to use for public key authentication
        `pemPassword` - to use for accessing the pemFile (optional)
        `passFile` - to store credentials
        `allowedAgentUse` - Whether to communicate with an agent for authentication
      Returns:
        session or null if not successful
      Throws:
        `java.io.IOException`