net.i2p.client.streaming

## Class I2PSocketManagerFactory

- java.lang.Object
- - net.i2p.client.streaming.I2PSocketManagerFactory

-     public class I2PSocketManagerFactory
      extends Object

  Simplify the creation of I2PSession and transient I2P Destination objects if necessary to create a socket manager. This class is most likely how classes will begin their use of the socket library. For new applications, createDisconnectedManager() is the preferred method. It is non-blocking and throws on all errors. All createManager() methods are blocking and return null on error. Note that for all methods, host and port arguments are ignored if in RouterContext; it will connect internally to the router in the JVM. You cannot connect out from a router JVM to another router.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `DEFAULT_MANAGER` The one and only manager.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `I2PSocketManagerFactory()`

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static I2PSocketManager` | `createDisconnectedManager(InputStream myPrivateKeyStream, String i2cpHost, int i2cpPort, Properties opts)` Create a disconnected socket manager using the destination loaded from the given private key stream, or null for a transient destination.
    `static I2PSocketManager` | `createDisconnectedManager(InputStream myPrivateKeyStream, String i2cpHost, int i2cpPort, Properties opts, IncomingConnectionFilter filter)` Create a disconnected socket manager using the destination loaded from the given private key stream, or null for a transient destination.
    `static I2PSocketManager` | `createManager()` Create a socket manager using a brand new destination connected to the I2CP router on the local machine on the default port (7654).
    `static I2PSocketManager` | `createManager(IncomingConnectionFilter filter)` Create a socket manager using a brand new destination connected to the I2CP router on the local machine on the default port (7654) with the specified incoming connection filter.
    `static I2PSocketManager` | `createManager(InputStream myPrivateKeyStream)` Create a socket manager using the destination loaded from the given private key stream and connected to the default I2CP host and port.
    `static I2PSocketManager` | `createManager(InputStream myPrivateKeyStream, IncomingConnectionFilter filter)` Create a socket manager using the destination loaded from the given private key stream and connected to the default I2CP host and port with the specified connection filter Blocks for a long time while the router builds tunnels.
    `static I2PSocketManager` | `createManager(InputStream myPrivateKeyStream, Properties opts)` Create a socket manager using the destination loaded from the given private key stream and connected to the default I2CP host and port.
    `static I2PSocketManager` | `createManager(InputStream myPrivateKeyStream, Properties opts, IncomingConnectionFilter filter)` Create a socket manager using the destination loaded from the given private key stream and connected to the default I2CP host and port.
    `static I2PSocketManager` | `createManager(InputStream myPrivateKeyStream, String i2cpHost, int i2cpPort, Properties opts)` Create a socket manager using the destination loaded from the given private key stream and connected to the I2CP router on the specified machine on the given port.
    `static I2PSocketManager` | `createManager(InputStream myPrivateKeyStream, String i2cpHost, int i2cpPort, Properties opts, IncomingConnectionFilter filter)` Create a socket manager using the destination loaded from the given private key stream and connected to the I2CP router on the specified machine on the given port.
    `static I2PSocketManager` | `createManager(Properties opts)` Create a socket manager using a brand new destination connected to the I2CP router on the local machine on the default port (7654).
    `static I2PSocketManager` | `createManager(Properties opts, IncomingConnectionFilter filter)` Create a socket manager using a brand new destination connected to the I2CP router on the local machine on the default port (7654).
    `static I2PSocketManager` | `createManager(String host, int port)` Create a socket manager using a brand new destination connected to the I2CP router on the specified host and port.
    `static I2PSocketManager` | `createManager(String host, int port, IncomingConnectionFilter filter)` Create a socket manager using a brand new destination connected to the I2CP router on the specified host and port with the specified connection filter Blocks for a long time while the router builds tunnels.
    `static I2PSocketManager` | `createManager(String i2cpHost, int i2cpPort, Properties opts)` Create a socket manager using a brand new destination connected to the I2CP router on the given machine reachable through the given port.
    `static I2PSocketManager` | `createManager(String i2cpHost, int i2cpPort, Properties opts, IncomingConnectionFilter filter)` Create a socket manager using a brand new destination connected to the I2CP router on the given machine reachable through the given port with the specified connection filter Blocks for a long time while the router builds tunnels.

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

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

- - ### Field Detail

    - #### DEFAULT_MANAGER

          public static final String DEFAULT_MANAGER

      The one and only manager.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### I2PSocketManagerFactory

          public I2PSocketManagerFactory()

  - ### Method Detail

    - #### createDisconnectedManager

          public static I2PSocketManager createDisconnectedManager(InputStream myPrivateKeyStream,
                                                                   String i2cpHost,
                                                                   int i2cpPort,
                                                                   Properties opts)
                                                            throws I2PSessionException

      Create a disconnected socket manager using the destination loaded from the given private key stream, or null for a transient destination. Non-blocking. Does not connect to the router or build tunnels. For servers, caller MUST call getSession().connect() to build tunnels and start listening. For clients, caller may do that to build tunnels in advance; otherwise, the first call to connect() will initiate a connection to the router, with significant delay for tunnel building.
      Parameters:
        `myPrivateKeyStream` - private key stream, format is specified in `PrivateKeyFile` or null for a transient destination. Caller must close.
        `i2cpHost` - I2CP host null to use default, ignored if in router context
        `i2cpPort` - I2CP port <= 0 to use default, ignored if in router context
        `opts` - Streaming and I2CP options, may be null
      Returns:
        the newly created socket manager, non-null (throws on error)
      Throws:
        `I2PSessionException`

    - #### createDisconnectedManager

          public static I2PSocketManager createDisconnectedManager(InputStream myPrivateKeyStream,
                                                                   String i2cpHost,
                                                                   int i2cpPort,
                                                                   Properties opts,
                                                                   IncomingConnectionFilter filter)
                                                            throws I2PSessionException

      Create a disconnected socket manager using the destination loaded from the given private key stream, or null for a transient destination. Non-blocking. Does not connect to the router or build tunnels. For servers, caller MUST call getSession().connect() to build tunnels and start listening. For clients, caller may do that to build tunnels in advance; otherwise, the first call to connect() will initiate a connection to the router, with significant delay for tunnel building.
      Parameters:
        `myPrivateKeyStream` - private key stream, format is specified in `PrivateKeyFile` or null for a transient destination. Caller must close.
        `i2cpHost` - I2CP host null to use default, ignored if in router context
        `i2cpPort` - I2CP port <= 0 to use default, ignored if in router context
        `opts` - Streaming and I2CP options, may be null
        `filter` - The filter to use for incoming connections
      Returns:
        the newly created socket manager, non-null (throws on error)
      Throws:
        `I2PSessionException`

    - #### createManager

          public static I2PSocketManager createManager()

      Create a socket manager using a brand new destination connected to the I2CP router on the local machine on the default port (7654). Blocks for a long time while the router builds tunnels. The nonblocking createDisconnectedManager() is preferred.
      Returns:
        the newly created socket manager, or null if there were errors

    - #### createManager

          public static I2PSocketManager createManager(IncomingConnectionFilter filter)

      Create a socket manager using a brand new destination connected to the I2CP router on the local machine on the default port (7654) with the specified incoming connection filter. Blocks for a long time while the router builds tunnels. The nonblocking createDisconnectedManager() is preferred.
      Parameters:
        `filter` - The filter for incoming connections
      Returns:
        the newly created socket manager, or null if there were errors

    - #### createManager

          public static I2PSocketManager createManager(InputStream myPrivateKeyStream)

      Create a socket manager using the destination loaded from the given private key stream and connected to the default I2CP host and port. Blocks for a long time while the router builds tunnels. The nonblocking createDisconnectedManager() is preferred.
      Parameters:
        `myPrivateKeyStream` - private key stream, format is specified in `PrivateKeyFile` or null for a transient destination. Caller must close.
      Returns:
        the newly created socket manager, or null if there were errors

    - #### createManager

          public static I2PSocketManager createManager(InputStream myPrivateKeyStream,
                                                       IncomingConnectionFilter filter)

      Create a socket manager using the destination loaded from the given private key stream and connected to the default I2CP host and port with the specified connection filter Blocks for a long time while the router builds tunnels. The nonblocking createDisconnectedManager() is preferred.
      Parameters:
        `myPrivateKeyStream` - private key stream, format is specified in `PrivateKeyFile` or null for a transient destination. Caller must close.
        `filter` - The filter to use for incoming connections
      Returns:
        the newly created socket manager, or null if there were errors

    - #### createManager

          public static I2PSocketManager createManager(InputStream myPrivateKeyStream,
                                                       Properties opts)

      Create a socket manager using the destination loaded from the given private key stream and connected to the default I2CP host and port. Blocks for a long time while the router builds tunnels. The nonblocking createDisconnectedManager() is preferred.
      Parameters:
        `myPrivateKeyStream` - private key stream, format is specified in `PrivateKeyFile` or null for a transient destination. Caller must close.
        `opts` - Streaming and I2CP options, may be null
      Returns:
        the newly created socket manager, or null if there were errors

    - #### createManager

          public static I2PSocketManager createManager(InputStream myPrivateKeyStream,
                                                       Properties opts,
                                                       IncomingConnectionFilter filter)

      Create a socket manager using the destination loaded from the given private key stream and connected to the default I2CP host and port. Blocks for a long time while the router builds tunnels. The nonblocking createDisconnectedManager() is preferred.
      Parameters:
        `myPrivateKeyStream` - private key stream, format is specified in `PrivateKeyFile` or null for a transient destination. Caller must close.
        `opts` - Streaming and I2CP options, may be null
        `filter` - The filter to use for incoming connections
      Returns:
        the newly created socket manager, or null if there were errors

    - #### createManager

          public static I2PSocketManager createManager(InputStream myPrivateKeyStream,
                                                       String i2cpHost,
                                                       int i2cpPort,
                                                       Properties opts)

      Create a socket manager using the destination loaded from the given private key stream and connected to the I2CP router on the specified machine on the given port. Blocks for a long time while the router builds tunnels. The nonblocking createDisconnectedManager() is preferred.
      Parameters:
        `myPrivateKeyStream` - private key stream, format is specified in `PrivateKeyFile` or null for a transient destination. Caller must close.
        `i2cpHost` - I2CP host null to use default, ignored if in router context
        `i2cpPort` - I2CP port <= 0 to use default, ignored if in router context
        `opts` - Streaming and I2CP options, may be null
      Returns:
        the newly created socket manager, or null if there were errors

    - #### createManager

          public static I2PSocketManager createManager(InputStream myPrivateKeyStream,
                                                       String i2cpHost,
                                                       int i2cpPort,
                                                       Properties opts,
                                                       IncomingConnectionFilter filter)

      Create a socket manager using the destination loaded from the given private key stream and connected to the I2CP router on the specified machine on the given port. Blocks for a long time while the router builds tunnels. The nonblocking createDisconnectedManager() is preferred.
      Parameters:
        `myPrivateKeyStream` - private key stream, format is specified in `PrivateKeyFile` or null for a transient destination. Caller must close.
        `i2cpHost` - I2CP host null to use default, ignored if in router context
        `i2cpPort` - I2CP port <= 0 to use default, ignored if in router context
        `opts` - Streaming and I2CP options, may be null
        `filter` - The filter to use for incoming connections
      Returns:
        the newly created socket manager, or null if there were errors

    - #### createManager

          public static I2PSocketManager createManager(Properties opts)

      Create a socket manager using a brand new destination connected to the I2CP router on the local machine on the default port (7654). Blocks for a long time while the router builds tunnels. The nonblocking createDisconnectedManager() is preferred.
      Parameters:
        `opts` - Streaming and I2CP options, may be null
      Returns:
        the newly created socket manager, or null if there were errors

    - #### createManager

          public static I2PSocketManager createManager(Properties opts,
                                                       IncomingConnectionFilter filter)

      Create a socket manager using a brand new destination connected to the I2CP router on the local machine on the default port (7654). Blocks for a long time while the router builds tunnels. The nonblocking createDisconnectedManager() is preferred.
      Parameters:
        `opts` - Streaming and I2CP options, may be null
        `filter` - The filter to use for incoming connections
      Returns:
        the newly created socket manager, or null if there were errors

    - #### createManager

          public static I2PSocketManager createManager(String host,
                                                       int port)

      Create a socket manager using a brand new destination connected to the I2CP router on the specified host and port. Blocks for a long time while the router builds tunnels. The nonblocking createDisconnectedManager() is preferred.
      Parameters:
        `host` - I2CP host null to use default, ignored if in router context
        `port` - I2CP port <= 0 to use default, ignored if in router context
      Returns:
        the newly created socket manager, or null if there were errors

    - #### createManager

          public static I2PSocketManager createManager(String host,
                                                       int port,
                                                       IncomingConnectionFilter filter)

      Create a socket manager using a brand new destination connected to the I2CP router on the specified host and port with the specified connection filter Blocks for a long time while the router builds tunnels. The nonblocking createDisconnectedManager() is preferred.
      Parameters:
        `host` - I2CP host null to use default, ignored if in router context
        `port` - I2CP port <= 0 to use default, ignored if in router context
        `filter` - The filter to use for incoming connections
      Returns:
        the newly created socket manager, or null if there were errors

    - #### createManager

          public static I2PSocketManager createManager(String i2cpHost,
                                                       int i2cpPort,
                                                       Properties opts)

      Create a socket manager using a brand new destination connected to the I2CP router on the given machine reachable through the given port. Blocks for a long time while the router builds tunnels. The nonblocking createDisconnectedManager() is preferred.
      Parameters:
        `i2cpHost` - I2CP host null to use default, ignored if in router context
        `i2cpPort` - I2CP port <= 0 to use default, ignored if in router context
        `opts` - Streaming and I2CP options, may be null
      Returns:
        the newly created socket manager, or null if there were errors

    - #### createManager

          public static I2PSocketManager createManager(String i2cpHost,
                                                       int i2cpPort,
                                                       Properties opts,
                                                       IncomingConnectionFilter filter)

      Create a socket manager using a brand new destination connected to the I2CP router on the given machine reachable through the given port with the specified connection filter Blocks for a long time while the router builds tunnels. The nonblocking createDisconnectedManager() is preferred.
      Parameters:
        `i2cpHost` - I2CP host null to use default, ignored if in router context
        `i2cpPort` - I2CP port <= 0 to use default, ignored if in router context
        `opts` - Streaming and I2CP options, may be null
        `filter` - The filter to use for incoming connections
      Returns:
        the newly created socket manager, or null if there were errors