org.apache.hc.core5.http.impl.io

## Class MonitoringResponseOutOfOrderStrategy

- java.lang.Object
- - org.apache.hc.core5.http.impl.io.MonitoringResponseOutOfOrderStrategy

- All Implemented Interfaces:
    ResponseOutOfOrderStrategy

      @Contract(threading=IMMUTABLE)
      public final class MonitoringResponseOutOfOrderStrategy
      extends Object
      implements ResponseOutOfOrderStrategy

  A `ResponseOutOfOrderStrategy` implementation which checks for premature responses every `chunkSize` bytes. An 8 KiB chunk size is used by default based on testing using values between 4 KiB and 128 KiB. This is optimized for correctness and results in a maximum upload speed of 8 MiB/s until `maxChunksToCheck` is reached.
  Since:
    5.1

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static MonitoringResponseOutOfOrderStrategy` | `INSTANCE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MonitoringResponseOutOfOrderStrategy()` Instantiates a default `MonitoringResponseOutOfOrderStrategy`.
    `MonitoringResponseOutOfOrderStrategy(long chunkSize)` Instantiates a `MonitoringResponseOutOfOrderStrategy` with unlimited `maxChunksToCheck`.
    `MonitoringResponseOutOfOrderStrategy(long chunkSize, long maxChunksToCheck)` Instantiates a `MonitoringResponseOutOfOrderStrategy`.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `isEarlyResponseDetected(ClassicHttpRequest request, HttpClientConnection connection, InputStream inputStream, long totalBytesSent, long nextWriteSize)` Called before each write to the to a socket `OutputStream` with the number of bytes that have already been sent, and the size of the write that will occur if this check does not encounter an out of order response.
    `String` | `toString()`

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

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

- - ### Field Detail

    - #### INSTANCE

          public static final MonitoringResponseOutOfOrderStrategy INSTANCE

  - ### Constructor Detail

    - #### MonitoringResponseOutOfOrderStrategy

          public MonitoringResponseOutOfOrderStrategy()

      Instantiates a default `MonitoringResponseOutOfOrderStrategy`. `INSTANCE` may be used instead.

    - #### MonitoringResponseOutOfOrderStrategy

          public MonitoringResponseOutOfOrderStrategy(long chunkSize)

      Instantiates a `MonitoringResponseOutOfOrderStrategy` with unlimited `maxChunksToCheck`.
      Parameters:
        `chunkSize` - The chunk size after which a response check is executed.

    - #### MonitoringResponseOutOfOrderStrategy

          public MonitoringResponseOutOfOrderStrategy(long chunkSize,
                                              long maxChunksToCheck)

      Instantiates a `MonitoringResponseOutOfOrderStrategy`.
      Parameters:
        `chunkSize` - The chunk size after which a response check is executed.
        `maxChunksToCheck` - The maximum number of chunks to check, allowing expensive checks to be avoided after a sufficient portion of the request entity has been transferred.

  - ### Method Detail

    - #### isEarlyResponseDetected

          public boolean isEarlyResponseDetected(ClassicHttpRequest request,
                                        HttpClientConnection connection,
                                        InputStream inputStream,
                                        long totalBytesSent,
                                        long nextWriteSize)
                                          throws IOException

      Description copied from interface: `ResponseOutOfOrderStrategy`
      Called before each write to the to a socket `OutputStream` with the number of bytes that have already been sent, and the size of the write that will occur if this check does not encounter an out of order response.
      Specified by:
        `isEarlyResponseDetected` in interface `ResponseOutOfOrderStrategy`
      Parameters:
        `request` - The current request.
        `connection` - The connection used to send the current request.
        `inputStream` - The response stream, this may be used to check for an early response.
        `totalBytesSent` - Number of bytes that have already been sent.
        `nextWriteSize` - The size of a socket write operation that will follow this check.
      Returns:
        True if an early response was detected, otherwise false.
      Throws:
        `IOException` - in case of a network failure while checking for an early response.

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

Copyright © 2005–2022 The Apache Software Foundation. All rights reserved.