aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKoushik Dutta <koushd@gmail.com>2015-06-12 13:31:50 -0700
committerKoushik Dutta <koushd@gmail.com>2015-06-28 14:25:56 -0700
commit1bc7905b07821f840068089343e6b77a8686d1ab (patch)
tree225c60c26482aa5005e39084212db66ea3e6ba5e
parentbbe510b87f45e7ebdcdb5101f903f7482c652712 (diff)
downloadAndroidAsync-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.java20
-rw-r--r--AndroidAsync/src/com/koushikdutta/async/http/cache/ResponseCacheMiddleware.java18
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