net.i2p.client.streaming.impl

## Class I2PSocketOptionsImpl

- java.lang.Object
- - net.i2p.client.streaming.impl.I2PSocketOptionsImpl

- All Implemented Interfaces:
    I2PSocketOptions
  Direct Known Subclasses:
    ConnectionOptions

      class I2PSocketOptionsImpl
      extends Object
      implements I2PSocketOptions

  Define the configuration for streaming and verifying data on the socket. Use I2PSocketManager.buildOptions() to get one of these.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `DEFAULT_BUFFER_SIZE`
    `static int` | `DEFAULT_CONNECT_TIMEOUT`
    `static int` | `DEFAULT_READ_TIMEOUT`
    `static int` | `DEFAULT_WRITE_TIMEOUT`

    - ### Fields inherited from interface net.i2p.client.streaming.I2PSocketOptions

      `PROFILE_BULK, PROFILE_INTERACTIVE, PROP_BUFFER_SIZE, PROP_CONNECT_TIMEOUT, PROP_PROFILE, PROP_READ_TIMEOUT, PROP_WRITE_TIMEOUT`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `I2PSocketOptionsImpl()` Sets max buffer size, connect timeout, read timeout, and write timeout from System properties.
    `I2PSocketOptionsImpl(I2PSocketOptions opts)` Initializes from System properties then copies over all options.
    `I2PSocketOptionsImpl(Properties opts)` Sets max buffer size, connect timeout, read timeout, and write timeout from properties.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `long` | `getConnectTimeout()` How long we will wait for the ACK from a SYN, in milliseconds.
    `static double` | `getDouble(Properties opts, String name, double defaultVal)` Not part of the API, not for external use.
    `protected static int` | `getInt(Properties opts, String name, int defaultVal)`
    `int` | `getLocalPort()` The local port.
    `int` | `getMaxBufferSize()` How much data will we accept that hasn't been written out yet.
    `int` | `getPort()` The remote port.
    `long` | `getReadTimeout()` What is the longest we'll block on the input stream while waiting for more data.
    `long` | `getWriteTimeout()` What is the longest we'll block on the output stream while waiting for the data to flush.
    `protected void` | `init(Properties opts)` Sets max buffer size, connect timeout, read timeout, and write timeout from properties.
    `void` | `setConnectTimeout(long ms)` Define how long we will wait for the ACK from a SYN, in milliseconds.
    `void` | `setLocalPort(int port)` The local port.
    `void` | `setMaxBufferSize(int numBytes)` How much data will we accept that hasn't been written out yet.
    `void` | `setPort(int port)` The remote port.
    `void` | `setProperties(Properties opts)` Sets max buffer size, connect timeout, read timeout, and write timeout from properties.
    `void` | `setReadTimeout(long ms)` What is the longest we'll block on the input stream while waiting for more data.
    `void` | `setWriteTimeout(long ms)` What is the longest we'll block on the output stream while waiting for the data to flush.

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

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

- - ### Field Detail

    - #### DEFAULT_BUFFER_SIZE

          public static final int DEFAULT_BUFFER_SIZE

    - #### DEFAULT_CONNECT_TIMEOUT

          public static final int DEFAULT_CONNECT_TIMEOUT

      See Also:
        Constant Field Values

    - #### DEFAULT_READ_TIMEOUT

          public static final int DEFAULT_READ_TIMEOUT

      See Also:
        Constant Field Values

    - #### DEFAULT_WRITE_TIMEOUT

          public static final int DEFAULT_WRITE_TIMEOUT

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### I2PSocketOptionsImpl

          public I2PSocketOptionsImpl()

      Sets max buffer size, connect timeout, read timeout, and write timeout from System properties. Does not set local port or remote port.

    - #### I2PSocketOptionsImpl

          public I2PSocketOptionsImpl(I2PSocketOptions opts)

      Initializes from System properties then copies over all options.
      Parameters:
        `opts` - may be null

    - #### I2PSocketOptionsImpl

          public I2PSocketOptionsImpl(Properties opts)

      Sets max buffer size, connect timeout, read timeout, and write timeout from properties. Does not set local port or remote port. As of 0.9.19, defaults in opts are honored.
      Parameters:
        `opts` - may be null

  - ### Method Detail

    - #### getConnectTimeout

          public long getConnectTimeout()

      How long we will wait for the ACK from a SYN, in milliseconds. Default 60 seconds. Max of 2 minutes enforced in Connection.java, and it also interprets <= 0 as default.
      Specified by:
        `getConnectTimeout` in interface `I2PSocketOptions`
      Returns:
        milliseconds to wait, or -1 if we will wait indefinitely

    - #### getDouble

          public static double getDouble(Properties opts,
                                         String name,
                                         double defaultVal)

      Not part of the API, not for external use.

    - #### getInt

          protected static int getInt(Properties opts,
                                      String name,
                                      int defaultVal)

    - #### getLocalPort

          public int getLocalPort()

      The local port.
      Specified by:
        `getLocalPort` in interface `I2PSocketOptions`
      Returns:
        Default I2PSession.PORT_UNSPECIFIED (0) or PORT_ANY (0)

    - #### getMaxBufferSize

          public int getMaxBufferSize()

      How much data will we accept that hasn't been written out yet. After this amount has been exceeded, subsequent .write calls will block until either some data is removed or the connection is closed. If this is less than or equal to zero, there is no limit (warning: can eat ram) Default 64 KB
      Specified by:
        `getMaxBufferSize` in interface `I2PSocketOptions`
      Returns:
        buffer size limit, in bytes

    - #### getPort

          public int getPort()

      The remote port.
      Specified by:
        `getPort` in interface `I2PSocketOptions`
      Returns:
        Default I2PSession.PORT_UNSPECIFIED (0) or PORT_ANY (0)

    - #### getReadTimeout

          public long getReadTimeout()

      What is the longest we'll block on the input stream while waiting for more data. If this value is exceeded, the read() throws SocketTimeoutException as of 0.9.36. Prior to that, the read() returned -1 or 0. WARNING: Default -1 (unlimited), which is probably not what you want.
      Specified by:
        `getReadTimeout` in interface `I2PSocketOptions`
      Returns:
        timeout in ms, 0 for nonblocking, -1 for forever

    - #### getWriteTimeout

          public long getWriteTimeout()

      What is the longest we'll block on the output stream while waiting for the data to flush. If this value is exceeded, the write() throws InterruptedIOException. If this is less than or equal to zero, there is no timeout. Default -1 (unlimited)
      Specified by:
        `getWriteTimeout` in interface `I2PSocketOptions`
      Returns:
        wait time to block on the output stream while waiting for the data to flush.

    - #### init

          protected void init(Properties opts)

      Sets max buffer size, connect timeout, read timeout, and write timeout from properties. Does not set local port or remote port.

    - #### setConnectTimeout

          public void setConnectTimeout(long ms)

      Define how long we will wait for the ACK from a SYN, in milliseconds. Default 60 seconds. Max of 2 minutes enforced in Connection.java, and it also interprets <= 0 as default.
      Specified by:
        `setConnectTimeout` in interface `I2PSocketOptions`
      Parameters:
        `ms` - timeout in ms

    - #### setLocalPort

          public void setLocalPort(int port)

      The local port. Zero (default) means you will receive traffic on all ports. Nonzero means you will get traffic ONLY for that port, use with care, as most applications do not specify a remote port.
      Specified by:
        `setLocalPort` in interface `I2PSocketOptions`
      Parameters:
        `port` - 0 - 65535
      Throws:
        `IllegalArgumentException`

    - #### setMaxBufferSize

          public void setMaxBufferSize(int numBytes)

      How much data will we accept that hasn't been written out yet. After this amount has been exceeded, subsequent .write calls will block until either some data is removed or the connection is closed. If this is less than or equal to zero, there is no limit (warning: can eat ram) Default 64 KB
      Specified by:
        `setMaxBufferSize` in interface `I2PSocketOptions`
      Parameters:
        `numBytes` - How much data will we accept that hasn't been written out yet.

    - #### setPort

          public void setPort(int port)

      The remote port.
      Specified by:
        `setPort` in interface `I2PSocketOptions`
      Parameters:
        `port` - 0 - 65535
      Throws:
        `IllegalArgumentException`

    - #### setProperties

          public void setProperties(Properties opts)

      Sets max buffer size, connect timeout, read timeout, and write timeout from properties. Does not set local port or remote port. As of 0.9.19, defaults in opts are honored.
      Parameters:
        `opts` - may be null

    - #### setReadTimeout

          public void setReadTimeout(long ms)

      What is the longest we'll block on the input stream while waiting for more data. If this value is exceeded, the read() throws SocketTimeoutException as of 0.9.36. Prior to that, the read() returned -1 or 0. WARNING: Default -1 (unlimited), which is probably not what you want.
      Specified by:
        `setReadTimeout` in interface `I2PSocketOptions`
      Parameters:
        `ms` - timeout in ms, 0 for nonblocking, -1 for forever

    - #### setWriteTimeout

          public void setWriteTimeout(long ms)

      What is the longest we'll block on the output stream while waiting for the data to flush. If this value is exceeded, the write() throws InterruptedIOException. If this is less than or equal to zero, there is no timeout. Default -1 (unlimited)
      Specified by:
        `setWriteTimeout` in interface `I2PSocketOptions`
      Parameters:
        `ms` - wait time to block on the output stream while waiting for the data to flush.