diff options
author | Koushik Dutta <koushd@gmail.com> | 2015-06-12 13:31:50 -0700 |
---|---|---|
committer | Koushik Dutta <koushd@gmail.com> | 2015-06-28 14:25:56 -0700 |
commit | 1bc7905b07821f840068089343e6b77a8686d1ab (patch) | |
tree | 225c60c26482aa5005e39084212db66ea3e6ba5e | |
parent | bbe510b87f45e7ebdcdb5101f903f7482c652712 (diff) | |
download | AndroidAsync-1bc7905b07821f840068089343e6b77a8686d1ab.tar.gz AndroidAsync-1bc7905b07821f840068089343e6b77a8686d1ab.tar.bz2 AndroidAsync-1bc7905b07821f840068089343e6b77a8686d1ab.zip |
Manually closing AsyncHttpResponse should also terminate the socket.
-rw-r--r-- | AndroidAsync/src/com/koushikdutta/async/http/AsyncHttpResponseImpl.java | 20 | ||||
-rw-r--r-- | AndroidAsync/src/com/koushikdutta/async/http/cache/ResponseCacheMiddleware.java | 18 |
2 files changed, 24 insertions, 14 deletions
diff --git a/AndroidAsync/src/com/koushikdutta/async/http/AsyncHttpResponseImpl.java b/AndroidAsync/src/com/koushikdutta/async/http/AsyncHttpResponseImpl.java index c161f30..c6f02a1 100644 --- a/AndroidAsync/src/com/koushikdutta/async/http/AsyncHttpResponseImpl.java +++ b/AndroidAsync/src/com/koushikdutta/async/http/AsyncHttpResponseImpl.java @@ -74,10 +74,7 @@ abstract class AsyncHttpResponseImpl extends FilteredDataEmitter implements Asyn return this; } - @Override - protected void report(Exception e) { - super.report(e); - + private void terminate() { // DISCONNECT. EVERYTHING. // should not get any data after this point... // if so, eat it and disconnect. @@ -88,12 +85,25 @@ abstract class AsyncHttpResponseImpl extends FilteredDataEmitter implements Asyn mSocket.close(); } }); + } + + @Override + protected void report(Exception e) { + super.report(e); + + terminate(); mSocket.setWriteableCallback(null); mSocket.setClosedCallback(null); mSocket.setEndCallback(null); mCompleted = true; } - + + @Override + public void close() { + super.close(); + terminate(); + } + private AsyncHttpRequest mRequest; private AsyncSocket mSocket; protected Headers mHeaders; diff --git a/AndroidAsync/src/com/koushikdutta/async/http/cache/ResponseCacheMiddleware.java b/AndroidAsync/src/com/koushikdutta/async/http/cache/ResponseCacheMiddleware.java index 614ba40..71abcf0 100644 --- a/AndroidAsync/src/com/koushikdutta/async/http/cache/ResponseCacheMiddleware.java +++ b/AndroidAsync/src/com/koushikdutta/async/http/cache/ResponseCacheMiddleware.java @@ -169,7 +169,7 @@ public class ResponseCacheMiddleware extends SimpleMiddleware { @Override public void run() { data.connectCallback.onConnectCompleted(null, socket); - socket.spewInternal(); + socket.sendCachedDataOnNetworkThread(); } }); cacheHitCount++; @@ -243,7 +243,7 @@ public class ResponseCacheMiddleware extends SimpleMiddleware { CachedBodyEmitter bodySpewer = new CachedBodyEmitter(cacheData.candidate, cacheData.contentLength); bodySpewer.setDataEmitter(data.bodyEmitter); data.bodyEmitter = bodySpewer; - bodySpewer.spew(); + bodySpewer.sendCachedData(); return; } @@ -416,14 +416,14 @@ public class ResponseCacheMiddleware extends SimpleMiddleware { allocator.setCurrentAlloc((int)contentLength); } - Runnable spewRunnable = new Runnable() { + Runnable sendCachedDataRunnable = new Runnable() { @Override public void run() { - spewInternal(); + sendCachedDataOnNetworkThread(); } }; - void spewInternal() { + void sendCachedDataOnNetworkThread() { if (pending.remaining() > 0) { super.onDataAvailable(CachedBodyEmitter.this, pending); if (pending.remaining() > 0) @@ -456,17 +456,17 @@ public class ResponseCacheMiddleware extends SimpleMiddleware { return; // this limits max throughput to 256k (aka max alloc) * 100 per second... // roughly 25MB/s - getServer().postDelayed(spewRunnable, 10); + getServer().postDelayed(sendCachedDataRunnable, 10); } - void spew() { - getServer().post(spewRunnable); + void sendCachedData() { + getServer().post(sendCachedDataRunnable); } @Override public void resume() { paused = false; - spew(); + sendCachedData(); } @Override |