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 Details

  • Constructor Details

    • MonitoringResponseOutOfOrderStrategy

      public MonitoringResponseOutOfOrderStrategy()
      Instantiates a default MonitoringResponseOutOfOrderStrategy. INSTANCE may be used instead.
    • MonitoringResponseOutOfOrderStrategy

      public MonitoringResponseOutOfOrderStrategy(long chunkSize)
      Parameters:
      chunkSize - The chunk size after which a response check is executed.
    • MonitoringResponseOutOfOrderStrategy

      public MonitoringResponseOutOfOrderStrategy(long chunkSize, long maxChunksToCheck)
      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 Details

    • 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.
    • nextWriteStartsNewChunk

      private boolean nextWriteStartsNewChunk(long totalBytesSent, long nextWriteSize)
    • toString

      public String toString()
      Overrides:
      toString in class Object