Package 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 -
Constructor Summary
ConstructorsConstructorDescriptionInstantiates a defaultMonitoringResponseOutOfOrderStrategy.MonitoringResponseOutOfOrderStrategy(long chunkSize) Instantiates aMonitoringResponseOutOfOrderStrategywith unlimitedmaxChunksToCheck.MonitoringResponseOutOfOrderStrategy(long chunkSize, long maxChunksToCheck) Instantiates aMonitoringResponseOutOfOrderStrategy. -
Method Summary
Modifier and TypeMethodDescriptionbooleanisEarlyResponseDetected(ClassicHttpRequest request, HttpClientConnection connection, InputStream inputStream, long totalBytesSent, long nextWriteSize) Called before each write to the to a socketOutputStreamwith 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.toString()
-
Field Details
-
INSTANCE
-
-
Constructor Details
-
MonitoringResponseOutOfOrderStrategy
public MonitoringResponseOutOfOrderStrategy()Instantiates a defaultMonitoringResponseOutOfOrderStrategy.INSTANCEmay be used instead. -
MonitoringResponseOutOfOrderStrategy
public MonitoringResponseOutOfOrderStrategy(long chunkSize) Instantiates aMonitoringResponseOutOfOrderStrategywith unlimitedmaxChunksToCheck.- Parameters:
chunkSize- The chunk size after which a response check is executed.
-
MonitoringResponseOutOfOrderStrategy
public MonitoringResponseOutOfOrderStrategy(long chunkSize, long maxChunksToCheck) Instantiates aMonitoringResponseOutOfOrderStrategy.- 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:ResponseOutOfOrderStrategyCalled before each write to the to a socketOutputStreamwith 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:
isEarlyResponseDetectedin interfaceResponseOutOfOrderStrategy- 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
-