Return-Path: X-Original-To: apmail-hc-commits-archive@www.apache.org Delivered-To: apmail-hc-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id B1D659044 for ; Thu, 2 Aug 2012 12:03:49 +0000 (UTC) Received: (qmail 48340 invoked by uid 500); 2 Aug 2012 12:03:49 -0000 Delivered-To: apmail-hc-commits-archive@hc.apache.org Received: (qmail 48213 invoked by uid 500); 2 Aug 2012 12:03:48 -0000 Mailing-List: contact commits-help@hc.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "HttpComponents Project" Delivered-To: mailing list commits@hc.apache.org Received: (qmail 47840 invoked by uid 99); 2 Aug 2012 12:03:48 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 02 Aug 2012 12:03:48 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 02 Aug 2012 12:03:45 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id DA89F23888CD for ; Thu, 2 Aug 2012 12:03:00 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1368430 - in /httpcomponents/httpasyncclient/trunk: RELEASE_NOTES.txt httpasyncclient/src/main/java/org/apache/http/impl/nio/client/DefaultAsyncRequestDirector.java Date: Thu, 02 Aug 2012 12:03:00 -0000 To: commits@hc.apache.org From: olegk@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120802120300.DA89F23888CD@eris.apache.org> Author: olegk Date: Thu Aug 2 12:03:00 2012 New Revision: 1368430 URL: http://svn.apache.org/viewvc?rev=1368430&view=rev Log: HTTPASYNC-20: HTTP exchange can now be aborted with HttpUriRequest#abort() Modified: httpcomponents/httpasyncclient/trunk/RELEASE_NOTES.txt httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/DefaultAsyncRequestDirector.java Modified: httpcomponents/httpasyncclient/trunk/RELEASE_NOTES.txt URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/RELEASE_NOTES.txt?rev=1368430&r1=1368429&r2=1368430&view=diff ============================================================================== --- httpcomponents/httpasyncclient/trunk/RELEASE_NOTES.txt (original) +++ httpcomponents/httpasyncclient/trunk/RELEASE_NOTES.txt Thu Aug 2 12:03:00 2012 @@ -1,6 +1,9 @@ Changes sicne release 4.0 Beta 1 ------------------- +* [HTTPASYNC-20] HTTP exchange can now be aborted with HttpUriRequest#abort(). + Contributed by Oleg Kalnichevski + * [HTTPASYNC-17] Caching HttpAsyncClient facade. Contributed by Clinton Nielsen Modified: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/DefaultAsyncRequestDirector.java URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/DefaultAsyncRequestDirector.java?rev=1368430&r1=1368429&r2=1368430&view=diff ============================================================================== --- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/DefaultAsyncRequestDirector.java (original) +++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/DefaultAsyncRequestDirector.java Thu Aug 2 12:03:00 2012 @@ -54,6 +54,7 @@ import org.apache.http.client.NonRepeata import org.apache.http.client.RedirectException; import org.apache.http.client.RedirectStrategy; import org.apache.http.client.UserTokenHandler; +import org.apache.http.client.methods.AbortableHttpRequest; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.client.params.ClientPNames; import org.apache.http.client.params.HttpClientParams; @@ -61,6 +62,7 @@ import org.apache.http.client.protocol.C import org.apache.http.client.utils.URIUtils; import org.apache.http.concurrent.FutureCallback; import org.apache.http.conn.ConnectionKeepAliveStrategy; +import org.apache.http.conn.ConnectionReleaseTrigger; import org.apache.http.conn.routing.BasicRouteDirector; import org.apache.http.conn.routing.HttpRoute; import org.apache.http.conn.routing.HttpRouteDirector; @@ -92,7 +94,7 @@ import org.apache.http.protocol.HttpProc class DefaultAsyncRequestDirector implements HttpAsyncRequestExecutionHandler { private static final AtomicLong COUNTER = new AtomicLong(1); - + private final Log log; private final HttpAsyncRequestProducer requestProducer; @@ -117,7 +119,7 @@ class DefaultAsyncRequestDirector imp private volatile boolean closed; private volatile ManagedClientAsyncConnection managedConn; - + private RoutedRequest mainRequest; private RoutedRequest followup; private HttpResponse finalResponse; @@ -209,6 +211,18 @@ class DefaultAsyncRequestDirector imp HttpHost target = this.requestProducer.getTarget(); HttpRequest request = this.requestProducer.generateRequest(); + if (request instanceof AbortableHttpRequest) { + ((AbortableHttpRequest) request).setReleaseTrigger(new ConnectionReleaseTrigger() { + + public void releaseConnection() throws IOException { + } + + public void abortConnection() throws IOException { + cancel(); + } + + }); + } this.params = new ClientParamsStack(null, this.clientParams, request.getParams(), null); RequestWrapper wrapper = wrapRequest(request); wrapper.setParams(this.params); @@ -279,7 +293,7 @@ class DefaultAsyncRequestDirector imp this.targetAuthState.update( new BasicScheme(), new UsernamePasswordCredentials(userinfo)); } - + // Re-write request URI if needed rewriteRequestURI(this.currentRequest, route); }