Author: toad
Date: 2007-08-11 17:17:03 +0000 (Sat, 11 Aug 2007)
New Revision: 14617
Modified:
trunk/freenet/src/freenet/client/async/ClientGetter.java
Log:
Run client callbacks on a separate thread
Modified: trunk/freenet/src/freenet/client/async/ClientGetter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/ClientGetter.java 2007-08-11
17:09:31 UTC (rev 14616)
+++ trunk/freenet/src/freenet/client/async/ClientGetter.java 2007-08-11
17:17:03 UTC (rev 14617)
@@ -141,7 +141,13 @@
if(returnBucket != null &&
Logger.shouldLog(Logger.MINOR, this))
Logger.minor(this, "client.async returned data
in returnBucket");
}
- client.onSuccess(result, this);
+ final FetchResult res = result;
+ ctx.executor.execute(new Runnable() {
+ public void run() {
+ client.onSuccess(res, ClientGetter.this);
+ }
+ }, "ClientGetter onSuccess callback");
+
}
public void onFailure(FetchException e, ClientGetState state) {
@@ -176,7 +182,13 @@
if(e.mode == FetchException.DATA_NOT_FOUND &&
super.successfulBlocks > 0)
e = new FetchException(e,
FetchException.ALL_DATA_NOT_FOUND);
Logger.minor(this, "onFailure("+e+", "+state+") on
"+this+" for "+uri, e);
- client.onFailure(e, this);
+ final FetchException e1 = e;
+ ctx.executor.execute(new Runnable() {
+ public void run() {
+ client.onFailure(e1, ClientGetter.this);
+ }
+ }, "ClientGetter onFailure callback");
+
return;
}
}