On Thu, 2016-10-20 at 12:11 +0200, Joan Balagueró wrote:
> Hello,
>
> In my async client pool, Ive currently set up a select interval of 1000ms.
> But I need to control response timeouts of 50ms, 100ms, etc.
>
> So Ihave tried to implement something like this in the 'consumeContent'
> method of my 'HttpAsyncResponseConsumer':
>
> public void consumeContent(final ContentDecoder decoder, final IOControl
> ioctrl) throws IOException
> {
> int numBytesRead;
>
> if (this.bbuf == null)
> {
>this.bbuf = ByteBuffer.allocate(32768);
>this.vbaos = new VentusByteArrayOutputStream();
> }
>
> // If the difference between now and the starting point of the request
> (when I sent it to the server) is greater than 8ms, throw a
> SocketTimeoutException.
> long diff = System.currentTimeMillis() - this.startTime;
> if (diff >= 8) throw new java.net.SocketTimeoutException("Socket timeout
> :: consumeContent :: [ " + diff + "ms > " + "8ms ]");
>
> while ( (numBytesRead = decoder.read(this.bbuf)) > 0 )
> {
>this.vbaos.write(this.bbuf.array(), 0, numBytesRead);
>this.bbuf.clear();
> }
> }
>
> And it seems to work. The exception is thrown, the consumeContent is no
> longer called, the 'responseCompleted' method is not called, and the async
> client calls the 'failed' method that logs the exception correctly.
>
> My question is: can I be sure that the response reading was stopped, the
> connection was aborted (even without completing the response reading)
Yes, you can.
> and
> the thread was released?
>
I am not sure I understand what thread you are referring to.
Oleg
-
To unsubscribe, e-mail: httpclient-users-unsubscr...@hc.apache.org
For additional commands, e-mail: httpclient-users-h...@hc.apache.org