Package org.apache.commons.io.input

# Class ThrottledInputStream.Builder

java.lang.Object
org.apache.commons.io.build.AbstractSupplier<ThrottledInputStream,ThrottledInputStream.Builder>
org.apache.commons.io.build.AbstractOriginSupplier<ThrottledInputStream,ThrottledInputStream.Builder>
org.apache.commons.io.build.AbstractStreamBuilder<ThrottledInputStream,ThrottledInputStream.Builder>
org.apache.commons.io.input.ProxyInputStream.AbstractBuilder<ThrottledInputStream,ThrottledInputStream.Builder>
org.apache.commons.io.input.ThrottledInputStream.Builder

All Implemented Interfaces:
  `IOSupplier<ThrottledInputStream>`

Enclosing class:
  `ThrottledInputStream`

public static class ThrottledInputStream.Builder extends ProxyInputStream.AbstractBuilder<ThrottledInputStream,ThrottledInputStream.Builder>
Builds a new `ThrottledInputStream`.

## Using NIO

     ThrottledInputStream in = ThrottledInputStream.builder()
       .setPath(Paths.get("MyFile.xml"))
       .setMaxBytes(100_000, ChronoUnit.SECONDS)
       .get();

## Using IO

     ThrottledInputStream in = ThrottledInputStream.builder()
       .setFile(new File("MyFile.xml"))
       .setMaxBytes(100_000, ChronoUnit.SECONDS)
       .get();

     ThrottledInputStream in = ThrottledInputStream.builder()
       .setInputStream(inputStream)
       .setMaxBytes(100_000, ChronoUnit.SECONDS)
       .get();

See Also:
  - `get()`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Builder()`
  Constructs a new builder of `ThrottledInputStream`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `ThrottledInputStream`
  `get()`
  Builds a new `ThrottledInputStream`.
  `ThrottledInputStream.Builder`
  `setMaxBytes(long value, ChronoUnit chronoUnit)`
  Sets the maximum bytes per time period unit.
  `void`
  `setMaxBytesPerSecond(long maxBytesPerSecond)`
  Sets the maximum bytes per second.

  ### Methods inherited from class org.apache.commons.io.input.ProxyInputStream.AbstractBuilder

  `getAfterRead, setAfterRead`

  ### Methods inherited from class org.apache.commons.io.build.AbstractStreamBuilder

  `getBufferSize, getBufferSizeDefault, getCharSequence, getCharset, getCharsetDefault, getFile, getInputStream, getOpenOptions, getOutputStream, getPath, getRandomAccessFile, getReader, getWriter, setBufferSize, setBufferSize, setBufferSizeChecker, setBufferSizeDefault, setBufferSizeMax, setCharset, setCharset, setCharsetDefault, setOpenOptions`

  ### Methods inherited from class org.apache.commons.io.build.AbstractOriginSupplier

  `checkOrigin, getOrigin, hasOrigin, newByteArrayOrigin, newCharSequenceOrigin, newFileOrigin, newFileOrigin, newInputStreamOrigin, newOutputStreamOrigin, newPathOrigin, newPathOrigin, newRandomAccessFileOrigin, newRandomAccessFileOrigin, newReaderOrigin, newURIOrigin, newWriterOrigin, setByteArray, setCharSequence, setFile, setFile, setInputStream, setOrigin, setOutputStream, setPath, setPath, setRandomAccessFile, setRandomAccessFile, setReader, setURI, setWriter`

  ### Methods inherited from class org.apache.commons.io.build.AbstractSupplier

  `asThis`

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

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

  ### Methods inherited from interface org.apache.commons.io.function.IOSupplier

  `asSupplier, getUnchecked`

- ## Constructor Details

  - ### Builder

    public Builder()
    Constructs a new builder of `ThrottledInputStream`.

- ## Method Details

  - ### get

    public ThrottledInputStream get() throws IOException
    Builds a new `ThrottledInputStream`.

    You must set an aspect that supports `AbstractStreamBuilder.getInputStream()`, otherwise, this method throws an exception.

    This builder uses the following aspects:

    - `AbstractStreamBuilder.getInputStream()` gets the target aspect.
    - maxBytesPerSecond
    Returns:
      a new instance.
    Throws:
      `IllegalStateException` - if the `origin` is `null`.
      `UnsupportedOperationException` - if the origin cannot be converted to an `InputStream`.
      `IOException` - if an I/O error occurs converting to an `InputStream` using `AbstractStreamBuilder.getInputStream()`.
    See Also:
      - `AbstractStreamBuilder.getInputStream()`
      - `IOSupplier.getUnchecked()`

  - ### setMaxBytes

    public ThrottledInputStream.Builder setMaxBytes(long value, ChronoUnit chronoUnit)
    Sets the maximum bytes per time period unit.

    For example, to throttle reading to 100K per second, use:

         builder.setMaxBytes(100_000, ChronoUnit.SECONDS)

    To test idle timeouts for example, use 1 byte per minute, 1 byte per 30 seconds, and so on.

    Parameters:
      `value` - the maximum bytes
      `chronoUnit` - a duration scale goal.
    Returns:
      this instance.
    Throws:
      `IllegalArgumentException` - Thrown if maxBytesPerSecond <= 0.
    Since:
      2.19.0

  - ### setMaxBytesPerSecond

    public void setMaxBytesPerSecond(long maxBytesPerSecond)
    Sets the maximum bytes per second.
    Parameters:
      `maxBytesPerSecond` - the maximum bytes per second.
    Throws:
      `IllegalArgumentException` - Thrown if maxBytesPerSecond <= 0.