Author: toad
Date: 2008-06-05 22:57:27 +0000 (Thu, 05 Jun 2008)
New Revision: 20233
Modified:
branches/db4o/freenet/src/freenet/client/async/BinaryBlobInserter.java
branches/db4o/freenet/src/freenet/client/async/ClientPutState.java
branches/db4o/freenet/src/freenet/client/async/ClientPutter.java
branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
branches/db4o/freenet/src/freenet/client/async/MultiPutCompletionCallback.java
branches/db4o/freenet/src/freenet/client/async/PutCompletionCallback.java
branches/db4o/freenet/src/freenet/client/async/SimpleHealingQueue.java
branches/db4o/freenet/src/freenet/client/async/SimpleManifestPutter.java
branches/db4o/freenet/src/freenet/client/async/SingleFileInserter.java
branches/db4o/freenet/src/freenet/client/async/SplitFileInserter.java
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java
branches/db4o/freenet/src/freenet/client/async/USKFetcher.java
branches/db4o/freenet/src/freenet/node/SendableInsert.java
branches/db4o/freenet/src/freenet/node/SimpleSendableInsert.java
Log:
More fixes
Modified: branches/db4o/freenet/src/freenet/client/async/BinaryBlobInserter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/BinaryBlobInserter.java
2008-06-05 22:25:19 UTC (rev 20232)
+++ branches/db4o/freenet/src/freenet/client/async/BinaryBlobInserter.java
2008-06-05 22:57:27 UTC (rev 20233)
@@ -77,12 +77,12 @@
else throw new IllegalArgumentException("Unknown block type
"+block.getClass()+" : "+block);
}
- public void cancel(ObjectContainer container) {
+ public void cancel(ObjectContainer container, ClientContext context) {
for(int i=0;i<inserters.length;i++) {
if(inserters[i] != null)
inserters[i].cancel();
}
- parent.onFailure(new
InsertException(InsertException.CANCELLED), this, container);
+ parent.onFailure(new
InsertException(InsertException.CANCELLED), this, container, context);
}
public BaseClientPutter getParent() {
@@ -115,7 +115,7 @@
this.blockNum = i;
}
- public void onSuccess(ObjectContainer container) {
+ public void onSuccess(ObjectContainer container, ClientContext
context) {
synchronized(this) {
if(inserters[blockNum] == null) return;
inserters[blockNum] = null;
@@ -123,23 +123,23 @@
succeededBlocks++;
}
parent.completedBlock(false);
- maybeFinish(container);
+ maybeFinish(container, context);
}
// FIXME duplicated code from SingleBlockInserter
// FIXME combine it somehow
- public void onFailure(LowLevelPutException e, Object keyNum,
ObjectContainer container) {
+ public void onFailure(LowLevelPutException e, Object keyNum,
ObjectContainer container, ClientContext context) {
synchronized(BinaryBlobInserter.this) {
if(inserters[blockNum] == null) return;
}
if(parent.isCancelled()) {
- fail(new
InsertException(InsertException.CANCELLED), true, container);
+ fail(new
InsertException(InsertException.CANCELLED), true, container, context);
return;
}
logMINOR = Logger.shouldLog(Logger.MINOR,
BinaryBlobInserter.this);
switch(e.code) {
case LowLevelPutException.COLLISION:
- fail(new
InsertException(InsertException.COLLISION), false, container);
+ fail(new
InsertException(InsertException.COLLISION), false, container, context);
break;
case LowLevelPutException.INTERNAL_ERROR:
errors.inc(InsertException.INTERNAL_ERROR);
@@ -162,7 +162,7 @@
if(logMINOR) Logger.minor(this, "Consecutive
RNFs: "+consecutiveRNFs+" / "+consecutiveRNFsCountAsSuccess);
if(consecutiveRNFs ==
consecutiveRNFsCountAsSuccess) {
if(logMINOR) Logger.minor(this,
"Consecutive RNFs: "+consecutiveRNFs+" - counting as success");
- onSuccess(container);
+ onSuccess(container, context);
return;
}
} else
@@ -170,14 +170,14 @@
if(logMINOR) Logger.minor(this, "Failed: "+e);
retries++;
if((retries > maxRetries) && (maxRetries != -1)) {
- fail(InsertException.construct(errors), false,
container);
+ fail(InsertException.construct(errors), false,
container, context);
return;
}
// Retry *this block*
this.schedule();
}
- private void fail(InsertException e, boolean fatal,
ObjectContainer container) {
+ private void fail(InsertException e, boolean fatal,
ObjectContainer container, ClientContext context) {
synchronized(BinaryBlobInserter.this) {
if(inserters[blockNum] == null) return;
inserters[blockNum] = null;
@@ -188,7 +188,7 @@
parent.fatallyFailedBlock();
else
parent.failedBlock();
- maybeFinish(container);
+ maybeFinish(container, context);
}
public boolean shouldCache() {
@@ -196,7 +196,7 @@
}
}
- public void maybeFinish(ObjectContainer container) {
+ public void maybeFinish(ObjectContainer container, ClientContext
context) {
boolean success;
boolean wasFatal;
synchronized(this) {
@@ -206,11 +206,11 @@
wasFatal = fatal;
}
if(success) {
- parent.onSuccess(this, container);
+ parent.onSuccess(this, container, context);
} else if(wasFatal)
- parent.onFailure(new
InsertException(InsertException.FATAL_ERRORS_IN_BLOCKS, errors, null), this,
container);
+ parent.onFailure(new
InsertException(InsertException.FATAL_ERRORS_IN_BLOCKS, errors, null), this,
container, context);
else
- parent.onFailure(new
InsertException(InsertException.TOO_MANY_RETRIES_IN_BLOCKS, errors, null),
this, container);
+ parent.onFailure(new
InsertException(InsertException.TOO_MANY_RETRIES_IN_BLOCKS, errors, null),
this, container, context);
}
}
Modified: branches/db4o/freenet/src/freenet/client/async/ClientPutState.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientPutState.java
2008-06-05 22:25:19 UTC (rev 20232)
+++ branches/db4o/freenet/src/freenet/client/async/ClientPutState.java
2008-06-05 22:57:27 UTC (rev 20233)
@@ -19,7 +19,7 @@
public abstract BaseClientPutter getParent();
/** Cancel the request. */
- public abstract void cancel(ObjectContainer container);
+ public abstract void cancel(ObjectContainer container, ClientContext
context);
/** Schedule the request. */
public abstract void schedule(ObjectContainer container, ClientContext
context) throws InsertException;
Modified: branches/db4o/freenet/src/freenet/client/async/ClientPutter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientPutter.java
2008-06-05 22:25:19 UTC (rev 20232)
+++ branches/db4o/freenet/src/freenet/client/async/ClientPutter.java
2008-06-05 22:57:27 UTC (rev 20233)
@@ -106,7 +106,7 @@
}
}
if(cancel) {
- onFailure(new
InsertException(InsertException.CANCELLED), null, container);
+ onFailure(new
InsertException(InsertException.CANCELLED), null, container, context);
oldProgress = null;
return false;
}
@@ -114,14 +114,14 @@
cancel = cancelled;
}
if(cancel) {
- onFailure(new
InsertException(InsertException.CANCELLED), null, container);
+ onFailure(new
InsertException(InsertException.CANCELLED), null, container, context);
oldProgress = null;
return false;
}
if(Logger.shouldLog(Logger.MINOR, this))
Logger.minor(this, "Starting insert:
"+currentState);
if(currentState instanceof SingleFileInserter)
-
((SingleFileInserter)currentState).start(oldProgress);
+
((SingleFileInserter)currentState).start(oldProgress, container);
else
currentState.schedule(container, context);
synchronized(this) {
@@ -129,7 +129,7 @@
cancel = cancelled;
}
if(cancel) {
- onFailure(new
InsertException(InsertException.CANCELLED), null, container);
+ onFailure(new
InsertException(InsertException.CANCELLED), null, container, context);
return false;
}
} catch (InsertException e) {
@@ -171,7 +171,7 @@
return true;
}
- public void onSuccess(ClientPutState state, ObjectContainer container) {
+ public void onSuccess(ClientPutState state, ObjectContainer container,
ClientContext context) {
synchronized(this) {
finished = true;
currentState = null;
@@ -185,7 +185,7 @@
client.onSuccess(this);
}
- public void onFailure(InsertException e, ClientPutState state,
ObjectContainer container) {
+ public void onFailure(InsertException e, ClientPutState state,
ObjectContainer container, ClientContext context) {
synchronized(this) {
finished = true;
currentState = null;
@@ -198,7 +198,7 @@
client.onMajorProgress();
}
- public void onEncode(BaseClientKey key, ClientPutState state,
ObjectContainer container) {
+ public void onEncode(BaseClientKey key, ClientPutState state,
ObjectContainer container, ClientContext context) {
synchronized(this) {
this.uri = key.getURI();
if(targetFilename != null)
@@ -218,8 +218,8 @@
if(startedStarting) return;
startedStarting = true;
}
- if(oldState != null) oldState.cancel(container);
- onFailure(new InsertException(InsertException.CANCELLED), null,
container);
+ if(oldState != null) oldState.cancel(container, context);
+ onFailure(new InsertException(InsertException.CANCELLED), null,
container, context);
}
public synchronized boolean isFinished() {
@@ -238,7 +238,7 @@
Logger.error(this, "onTransition: cur="+currentState+",
old="+oldState+", new="+newState);
}
- public void onMetadata(Metadata m, ClientPutState state,
ObjectContainer container) {
+ public void onMetadata(Metadata m, ClientPutState state,
ObjectContainer container, ClientContext context) {
Logger.error(this, "Got metadata on "+this+" from "+state+"
(this means the metadata won't be inserted)");
}
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
2008-06-05 22:25:19 UTC (rev 20232)
+++ branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
2008-06-05 22:57:27 UTC (rev 20233)
@@ -675,7 +675,7 @@
public void callFailure(final SendableInsert put, final
LowLevelPutException e, final Object keyNum, int prio, String name) {
databaseExecutor.execute(new Runnable() {
public void run() {
- put.onFailure(e, keyNum, selectorContainer);
+ put.onFailure(e, keyNum, selectorContainer,
clientContext);
selectorContainer.commit();
}
}, prio, name);
@@ -684,7 +684,7 @@
public void callSuccess(final SendableInsert put, final Object keyNum,
int prio, String name) {
databaseExecutor.execute(new Runnable() {
public void run() {
- put.onSuccess(keyNum, selectorContainer);
+ put.onSuccess(keyNum, selectorContainer,
clientContext);
selectorContainer.commit();
}
}, prio, name);
Modified:
branches/db4o/freenet/src/freenet/client/async/MultiPutCompletionCallback.java
===================================================================
---
branches/db4o/freenet/src/freenet/client/async/MultiPutCompletionCallback.java
2008-06-05 22:25:19 UTC (rev 20232)
+++
branches/db4o/freenet/src/freenet/client/async/MultiPutCompletionCallback.java
2008-06-05 22:57:27 UTC (rev 20233)
@@ -36,7 +36,7 @@
finished = false;
}
- public void onSuccess(ClientPutState state, ObjectContainer container) {
+ public void onSuccess(ClientPutState state, ObjectContainer container,
ClientContext context) {
onBlockSetFinished(state, container);
onFetchable(state, container);
synchronized(this) {
@@ -45,10 +45,10 @@
if(!(waitingFor.isEmpty() && started))
return;
}
- complete(null, container);
+ complete(null, container, context);
}
- public void onFailure(InsertException e, ClientPutState state,
ObjectContainer container) {
+ public void onFailure(InsertException e, ClientPutState state,
ObjectContainer container, ClientContext context) {
synchronized(this) {
if(finished) return;
waitingFor.remove(state);
@@ -59,10 +59,10 @@
return;
}
}
- complete(e, container);
+ complete(e, container, context);
}
- private void complete(InsertException e, ObjectContainer container) {
+ private void complete(InsertException e, ObjectContainer container,
ClientContext context) {
synchronized(this) {
if(finished) return;
finished = true;
@@ -73,9 +73,9 @@
if(e == null) e = this.e;
}
if(e != null)
- cb.onFailure(e, this, container);
+ cb.onFailure(e, this, container, context);
else
- cb.onSuccess(this, container);
+ cb.onSuccess(this, container, context);
}
public synchronized void addURIGenerator(ClientPutState ps) {
@@ -90,7 +90,7 @@
waitingForFetchable.add(ps);
}
- public void arm(ObjectContainer container) {
+ public void arm(ObjectContainer container, ClientContext context) {
boolean allDone;
boolean allGotBlocks;
synchronized(this) {
@@ -103,7 +103,7 @@
cb.onBlockSetFinished(this, container);
}
if(allDone) {
- complete(e, container);
+ complete(e, container, context);
}
}
@@ -111,20 +111,20 @@
return parent;
}
- public void onEncode(BaseClientKey key, ClientPutState state,
ObjectContainer container) {
+ public void onEncode(BaseClientKey key, ClientPutState state,
ObjectContainer container, ClientContext context) {
synchronized(this) {
if(state != generator) return;
}
- cb.onEncode(key, this, container);
+ cb.onEncode(key, this, container, context);
}
- public void cancel(ObjectContainer container) {
+ public void cancel(ObjectContainer container, ClientContext context) {
ClientPutState[] states = new ClientPutState[waitingFor.size()];
synchronized(this) {
states = (ClientPutState[]) waitingFor.toArray(states);
}
for(int i=0;i<states.length;i++)
- states[i].cancel(container);
+ states[i].cancel(container, context);
}
public synchronized void onTransition(ClientPutState oldState,
ClientPutState newState, ObjectContainer container) {
@@ -142,9 +142,9 @@
}
}
- public synchronized void onMetadata(Metadata m, ClientPutState state,
ObjectContainer container) {
+ public synchronized void onMetadata(Metadata m, ClientPutState state,
ObjectContainer container, ClientContext context) {
if(generator == state) {
- cb.onMetadata(m, this, container);
+ cb.onMetadata(m, this, container, context);
} else {
Logger.error(this, "Got metadata for "+state);
}
Modified:
branches/db4o/freenet/src/freenet/client/async/PutCompletionCallback.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/PutCompletionCallback.java
2008-06-05 22:25:19 UTC (rev 20232)
+++ branches/db4o/freenet/src/freenet/client/async/PutCompletionCallback.java
2008-06-05 22:57:27 UTC (rev 20233)
@@ -11,11 +11,11 @@
*/
public interface PutCompletionCallback {
- public void onSuccess(ClientPutState state, ObjectContainer container);
+ public void onSuccess(ClientPutState state, ObjectContainer container,
ClientContext context);
- public void onFailure(InsertException e, ClientPutState state,
ObjectContainer container);
+ public void onFailure(InsertException e, ClientPutState state,
ObjectContainer container, ClientContext context);
- public void onEncode(BaseClientKey usk, ClientPutState state,
ObjectContainer container);
+ public void onEncode(BaseClientKey usk, ClientPutState state,
ObjectContainer container, ClientContext context);
public void onTransition(ClientPutState oldState, ClientPutState
newState, ObjectContainer container);
@@ -23,7 +23,7 @@
* the metadata won't be inserted. Won't be called if there isn't
* any!
*/
- public void onMetadata(Metadata m, ClientPutState state,
ObjectContainer container);
+ public void onMetadata(Metadata m, ClientPutState state,
ObjectContainer container, ClientContext context);
/** Called when enough data has been inserted that the file can be
* retrieved, even if not all data has been inserted yet. Note that this
Modified: branches/db4o/freenet/src/freenet/client/async/SimpleHealingQueue.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SimpleHealingQueue.java
2008-06-05 22:25:19 UTC (rev 20232)
+++ branches/db4o/freenet/src/freenet/client/async/SimpleHealingQueue.java
2008-06-05 22:57:27 UTC (rev 20233)
@@ -82,7 +82,7 @@
// Do nothing
}
- public void onSuccess(ClientPutState state, ObjectContainer container) {
+ public void onSuccess(ClientPutState state, ObjectContainer container,
ClientContext context) {
SingleBlockInserter sbi = (SingleBlockInserter)state;
Bucket data = (Bucket) sbi.getToken();
synchronized(this) {
@@ -93,7 +93,7 @@
data.free();
}
- public void onFailure(InsertException e, ClientPutState state,
ObjectContainer container) {
+ public void onFailure(InsertException e, ClientPutState state,
ObjectContainer container, ClientContext context) {
SingleBlockInserter sbi = (SingleBlockInserter)state;
Bucket data = (Bucket) sbi.getToken();
synchronized(this) {
@@ -104,7 +104,7 @@
data.free();
}
- public void onEncode(BaseClientKey usk, ClientPutState state,
ObjectContainer container) {
+ public void onEncode(BaseClientKey usk, ClientPutState state,
ObjectContainer container, ClientContext context) {
// Ignore
}
@@ -113,7 +113,7 @@
Logger.error(this, "impossible: onTransition on
SimpleHealingQueue from "+oldState+" to "+newState, new Exception("debug"));
}
- public void onMetadata(Metadata m, ClientPutState state,
ObjectContainer container) {
+ public void onMetadata(Metadata m, ClientPutState state,
ObjectContainer container, ClientContext context) {
// Should never happen
Logger.error(this, "Got metadata on SimpleHealingQueue from
"+state+": "+m, new Exception("debug"));
}
Modified:
branches/db4o/freenet/src/freenet/client/async/SimpleManifestPutter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SimpleManifestPutter.java
2008-06-05 22:25:19 UTC (rev 20232)
+++ branches/db4o/freenet/src/freenet/client/async/SimpleManifestPutter.java
2008-06-05 22:57:27 UTC (rev 20233)
@@ -70,9 +70,9 @@
private String targetInZip;
private final Bucket data;
- public void start() throws InsertException {
+ public void start(ObjectContainer container) throws
InsertException {
if((origSFI == null) && (metadata != null)) return;
- origSFI.start(null);
+ origSFI.start(null, container);
origSFI = null;
}
@@ -84,7 +84,7 @@
return SimpleManifestPutter.this.finished || cancelled
|| SimpleManifestPutter.this.cancelled;
}
- public void onSuccess(ClientPutState state, ObjectContainer
container) {
+ public void onSuccess(ClientPutState state, ObjectContainer
container, ClientContext context) {
logMINOR = Logger.shouldLog(Logger.MINOR, this);
if(logMINOR) Logger.minor(this, "Completed "+this);
SimpleManifestPutter.this.onFetchable(this, container);
@@ -97,26 +97,26 @@
insertedAllFiles();
}
- public void onFailure(InsertException e, ClientPutState state,
ObjectContainer container) {
+ public void onFailure(InsertException e, ClientPutState state,
ObjectContainer container, ClientContext context) {
logMINOR = Logger.shouldLog(Logger.MINOR, this);
if(logMINOR) Logger.minor(this, "Failed: "+this+" -
"+e, e);
fail(e);
}
- public void onEncode(BaseClientKey key, ClientPutState state,
ObjectContainer container) {
+ public void onEncode(BaseClientKey key, ClientPutState state,
ObjectContainer container, ClientContext context) {
if(logMINOR) Logger.minor(this, "onEncode("+key+") for
"+this);
if(metadata == null) {
// The file was too small to have its own
metadata, we get this instead.
// So we make the key into metadata.
Metadata m =
new Metadata(Metadata.SIMPLE_REDIRECT,
key.getURI(), cm);
- onMetadata(m, null, container);
+ onMetadata(m, null, container, context);
}
}
public void onTransition(ClientPutState oldState,
ClientPutState newState, ObjectContainer container) {}
- public void onMetadata(Metadata m, ClientPutState state,
ObjectContainer container) {
+ public void onMetadata(Metadata m, ClientPutState state,
ObjectContainer container, ClientContext context) {
logMINOR = Logger.shouldLog(Logger.MINOR, this);
if(logMINOR) Logger.minor(this, "Assigning metadata:
"+m+" for "+this+" from "+state,
new Exception("debug"));
@@ -129,7 +129,7 @@
putHandlersWaitingForMetadata.remove(this);
if(!putHandlersWaitingForMetadata.isEmpty())
return;
}
- gotAllMetadata();
+ gotAllMetadata(container);
}
public void addBlock() {
@@ -239,7 +239,7 @@
// FIXME do something.
}
- public void start() throws InsertException {
+ public void start(ObjectContainer container) throws InsertException {
logMINOR = Logger.shouldLog(Logger.MINOR, this);
if (logMINOR)
Logger.minor(this, "Starting " + this);
@@ -250,7 +250,7 @@
}
try {
for (int i = 0; i < running.length; i++) {
- running[i].start();
+ running[i].start(container);
if (logMINOR)
Logger.minor(this, "Started " + i + "
of " + running.length);
if (isFinished()) {
@@ -263,7 +263,7 @@
Logger.minor(this, "Started " + running.length
+ " PutHandler's for " + this);
if (running.length == 0) {
insertedAllFiles = true;
- gotAllMetadata();
+ gotAllMetadata(container);
}
} catch (InsertException e) {
cancelAndFinish();
@@ -339,7 +339,7 @@
return finished || cancelled;
}
- private void gotAllMetadata() {
+ private void gotAllMetadata(ObjectContainer container) {
if(logMINOR) Logger.minor(this, "Got all metadata");
HashMap namesToByteArrays = new HashMap();
namesToByteArrays(putHandlersByName, namesToByteArrays);
@@ -362,11 +362,11 @@
}
baseMetadata =
Metadata.mkRedirectionManifestWithMetadata(namesToByteArrays);
- resolveAndStartBase();
+ resolveAndStartBase(container);
}
- private void resolveAndStartBase() {
+ private void resolveAndStartBase(ObjectContainer container) {
Bucket bucket = null;
synchronized(this) {
if(hasResolvedBase) return;
@@ -380,7 +380,7 @@
return;
} catch (MetadataUnresolvedException e) {
try {
- resolve(e);
+ resolve(e, container);
} catch (IOException e1) {
fail(new
InsertException(InsertException.BUCKET_ERROR, e, null));
return;
@@ -456,13 +456,13 @@
if(logMINOR) Logger.minor(this, "Inserting main
metadata: "+metadataInserter);
this.metadataPuttersByMetadata.put(baseMetadata,
metadataInserter);
metadataPuttersUnfetchable.put(baseMetadata,
metadataInserter);
- metadataInserter.start(null);
+ metadataInserter.start(null, container);
} catch (InsertException e) {
fail(e);
}
}
- private boolean resolve(MetadataUnresolvedException e) throws
InsertException, IOException {
+ private boolean resolve(MetadataUnresolvedException e, ObjectContainer
container) throws InsertException, IOException {
Metadata[] metas = e.mustResolve;
boolean mustWait = false;
for(int i=0;i<metas.length;i++) {
@@ -482,9 +482,9 @@
synchronized(this) {
this.metadataPuttersByMetadata.put(m,
metadataInserter);
}
- metadataInserter.start(null);
+ metadataInserter.start(null, container);
} catch (MetadataUnresolvedException e1) {
- resolve(e1);
+ resolve(e1, container);
}
}
return mustWait;
@@ -557,7 +557,7 @@
fail(new InsertException(InsertException.CANCELLED));
}
- public void onSuccess(ClientPutState state, ObjectContainer container) {
+ public void onSuccess(ClientPutState state, ObjectContainer container,
ClientContext context) {
logMINOR = Logger.shouldLog(Logger.MINOR, this);
synchronized(this) {
metadataPuttersByMetadata.remove(state.getToken());
@@ -580,12 +580,12 @@
complete();
}
- public void onFailure(InsertException e, ClientPutState state,
ObjectContainer container) {
+ public void onFailure(InsertException e, ClientPutState state,
ObjectContainer container, ClientContext context) {
logMINOR = Logger.shouldLog(Logger.MINOR, this);
fail(e);
}
- public void onEncode(BaseClientKey key, ClientPutState state,
ObjectContainer container) {
+ public void onEncode(BaseClientKey key, ClientPutState state,
ObjectContainer container, ClientContext context) {
if(state.getToken() == baseMetadata) {
this.finalURI = key.getURI();
if(logMINOR) Logger.minor(this, "Got metadata key:
"+finalURI);
@@ -595,7 +595,7 @@
Metadata m = (Metadata) state.getToken();
m.resolve(key.getURI());
if(logMINOR) Logger.minor(this, "Resolved "+m+" :
"+key.getURI());
- resolveAndStartBase();
+ resolveAndStartBase(container);
}
}
@@ -605,7 +605,7 @@
}
}
- public void onMetadata(Metadata m, ClientPutState state,
ObjectContainer container) {
+ public void onMetadata(Metadata m, ClientPutState state,
ObjectContainer container, ClientContext context) {
// Ignore
}
Modified: branches/db4o/freenet/src/freenet/client/async/SingleFileInserter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SingleFileInserter.java
2008-06-05 22:25:19 UTC (rev 20232)
+++ branches/db4o/freenet/src/freenet/client/async/SingleFileInserter.java
2008-06-05 22:57:27 UTC (rev 20233)
@@ -4,6 +4,8 @@
import java.net.MalformedURLException;
import java.util.HashMap;
+import com.db4o.ObjectContainer;
+
import freenet.client.InsertBlock;
import freenet.client.InsertContext;
import freenet.client.InsertException;
@@ -85,7 +87,7 @@
logMINOR = Logger.shouldLog(Logger.MINOR, this);
}
- public void start(SimpleFieldSet fs) throws InsertException {
+ public void start(SimpleFieldSet fs, ObjectContainer container) throws
InsertException {
if(fs != null) {
String type = fs.get("Type");
if(type.equals("SplitHandler")) {
@@ -94,7 +96,7 @@
try {
SplitHandler sh = new SplitHandler();
sh.start(fs, false);
- cb.onTransition(this, sh);
+ cb.onTransition(this, sh, container);
sh.schedule();
return;
} catch (ResumeException e) {
@@ -302,7 +304,7 @@
private ClientPutState createInserter(BaseClientPutter parent, Bucket
data, short compressionCodec, FreenetURI uri,
InsertContext ctx, PutCompletionCallback cb, boolean
isMetadata, int sourceLength, int token, boolean getCHKOnly,
- boolean addToParent, boolean encodeCHK) throws
InsertException {
+ boolean addToParent, boolean encodeCHK, ObjectContainer
container) throws InsertException {
uri.checkInsertURI(); // will throw an exception if needed
@@ -318,7 +320,7 @@
new SingleBlockInserter(parent, data,
compressionCodec, uri, ctx, cb, isMetadata, sourceLength, token,
getCHKOnly, addToParent, false,
this.token);
if(encodeCHK)
- cb.onEncode(sbi.getBlock().getClientKey(),
this);
+ cb.onEncode(sbi.getBlock().getClientKey(),
this, container);
return sbi;
}
@@ -393,14 +395,14 @@
// Default constructor
}
- public synchronized void onTransition(ClientPutState oldState,
ClientPutState newState) {
+ public synchronized void onTransition(ClientPutState oldState,
ClientPutState newState, ObjectContainer container) {
if(oldState == sfi)
sfi = newState;
if(oldState == metadataPutter)
metadataPutter = newState;
}
- public void onSuccess(ClientPutState state) {
+ public void onSuccess(ClientPutState state, ObjectContainer
container, ClientContext context) {
logMINOR = Logger.shouldLog(Logger.MINOR, this);
if(logMINOR) Logger.minor(this, "onSuccess("+state+")
for "+this);
boolean lateStart = false;
@@ -430,12 +432,12 @@
}
}
if(lateStart)
- startMetadata();
+ startMetadata(container, context);
else if(finished)
- cb.onSuccess(this);
+ cb.onSuccess(this, container, context);
}
- public void onFailure(InsertException e, ClientPutState state) {
+ public void onFailure(InsertException e, ClientPutState state,
ObjectContainer container, ClientContext context) {
synchronized(this) {
if(finished){
if(freeData)
@@ -443,10 +445,10 @@
return;
}
}
- fail(e);
+ fail(e, container, context);
}
- public void onMetadata(Metadata meta, ClientPutState state) {
+ public void onMetadata(Metadata meta, ClientPutState state,
ObjectContainer container, ClientContext context) {
InsertException e = null;
synchronized(this) {
if(finished) return;
@@ -468,11 +470,11 @@
}
}
if(reportMetadataOnly) {
- cb.onMetadata(meta, this);
+ cb.onMetadata(meta, this, container, context);
return;
}
if(e != null) {
- onFailure(e, state);
+ onFailure(e, state, container, context);
return;
}
@@ -483,7 +485,7 @@
Logger.error(this, "Impossible: "+e1, e1);
InsertException ex = new
InsertException(InsertException.INTERNAL_ERROR, "MetadataUnresolvedException in
SingleFileInserter.SplitHandler: "+e1, null);
ex.initCause(e1);
- fail(ex);
+ fail(ex, container, context);
return;
}
@@ -502,7 +504,7 @@
Logger.error(this, "Impossible
(2): "+e1, e1);
InsertException ex = new
InsertException(InsertException.INTERNAL_ERROR, "MetadataUnresolvedException in
SingleFileInserter.SplitHandler(2): "+e1, null);
ex.initCause(e1);
- fail(ex);
+ fail(ex, container, context);
return;
}
}
@@ -513,7 +515,7 @@
metadataBucket =
BucketTools.makeImmutableBucket(ctx.bf, metaBytes);
} catch (IOException e1) {
InsertException ex = new
InsertException(InsertException.BUCKET_ERROR, e1, null);
- fail(ex);
+ fail(ex, container, context);
return;
}
InsertBlock newBlock = new InsertBlock(metadataBucket,
null, block.desiredURI);
@@ -526,13 +528,13 @@
}
if(logMINOR) Logger.minor(this, "Putting
metadata on "+metadataPutter+" from "+sfi+"
("+((SplitFileInserter)sfi).getLength()+ ')');
} catch (InsertException e1) {
- cb.onFailure(e1, this);
+ cb.onFailure(e1, this, container, context);
return;
}
- startMetadata();
+ startMetadata(container, context);
}
- private void fail(InsertException e) {
+ private void fail(InsertException e, ObjectContainer container,
ClientContext context) {
if(logMINOR) Logger.minor(this, "Failing: "+e, e);
ClientPutState oldSFI = null;
ClientPutState oldMetadataPutter = null;
@@ -547,25 +549,25 @@
oldMetadataPutter = metadataPutter;
}
if(oldSFI != null)
- oldSFI.cancel();
+ oldSFI.cancel(container);
if(oldMetadataPutter != null)
- oldMetadataPutter.cancel();
+ oldMetadataPutter.cancel(container);
finished = true;
- cb.onFailure(e, this);
+ cb.onFailure(e, this, container, context);
}
public BaseClientPutter getParent() {
return parent;
}
- public void onEncode(BaseClientKey key, ClientPutState state) {
+ public void onEncode(BaseClientKey key, ClientPutState state,
ObjectContainer container) {
synchronized(this) {
if(state != metadataPutter) return;
}
- cb.onEncode(key, this);
+ cb.onEncode(key, this, container);
}
- public void cancel() {
+ public void cancel(ObjectContainer container) {
ClientPutState oldSFI = null;
ClientPutState oldMetadataPutter = null;
synchronized(this) {
@@ -573,15 +575,15 @@
oldMetadataPutter = metadataPutter;
}
if(oldSFI != null)
- oldSFI.cancel();
+ oldSFI.cancel(container);
if(oldMetadataPutter != null)
- oldMetadataPutter.cancel();
+ oldMetadataPutter.cancel(container);
if(freeData)
block.free();
}
- public void onBlockSetFinished(ClientPutState state) {
+ public void onBlockSetFinished(ClientPutState state,
ObjectContainer container) {
synchronized(this) {
if(state == sfi)
splitInsertSetBlocks = true;
@@ -590,11 +592,11 @@
if(!(splitInsertSetBlocks &&
metaInsertSetBlocks))
return;
}
- cb.onBlockSetFinished(this);
+ cb.onBlockSetFinished(this, container);
}
- public void schedule() throws InsertException {
- sfi.schedule();
+ public void schedule(ObjectContainer container, ClientContext
context) throws InsertException {
+ sfi.schedule(container, context);
}
public Object getToken() {
@@ -617,7 +619,7 @@
return fs;
}
- public void onFetchable(ClientPutState state) {
+ public void onFetchable(ClientPutState state, ObjectContainer
container) {
logMINOR = Logger.shouldLog(Logger.MINOR, this);
@@ -646,10 +648,10 @@
}
if(meta)
- cb.onFetchable(this);
+ cb.onFetchable(this, container);
}
- private void startMetadata() {
+ private void startMetadata(ObjectContainer container,
ClientContext context) {
try {
ClientPutState putter;
ClientPutState splitInserter;
@@ -664,7 +666,7 @@
}
if(putter != null) {
if(logMINOR) Logger.minor(this,
"Starting metadata inserter: "+putter+" for "+this);
- putter.schedule();
+ putter.schedule(container, context);
if(logMINOR) Logger.minor(this,
"Started metadata inserter: "+putter+" for "+this);
} else {
// Get all the URIs ASAP so we can
start to insert the metadata.
@@ -672,7 +674,7 @@
}
} catch (InsertException e1) {
Logger.error(this, "Failing "+this+" : "+e1,
e1);
- fail(e1);
+ fail(e1, container);
return;
}
}
@@ -688,8 +690,8 @@
block.free();
}
- public void schedule() throws InsertException {
- start(null);
+ public void schedule(ObjectContainer container) throws InsertException {
+ start(null, container);
}
public Object getToken() {
Modified: branches/db4o/freenet/src/freenet/client/async/SplitFileInserter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileInserter.java
2008-06-05 22:25:19 UTC (rev 20232)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileInserter.java
2008-06-05 22:57:27 UTC (rev 20233)
@@ -260,7 +260,7 @@
parent.onMajorProgress();
}
- public void segmentHasURIs(SplitFileInserterSegment segment,
ObjectContainer container) {
+ public void segmentHasURIs(SplitFileInserterSegment segment,
ObjectContainer container, ClientContext context) {
if(logMINOR) Logger.minor(this, "Segment has URIs: "+segment);
synchronized(this) {
if(haveSentMetadata) {
@@ -276,10 +276,10 @@
}
if(logMINOR) Logger.minor(this, "Have URIs from all segments");
- encodeMetadata(container);
+ encodeMetadata(container, context);
}
- private void encodeMetadata(ObjectContainer container) {
+ private void encodeMetadata(ObjectContainer container, ClientContext
context) {
boolean missingURIs;
Metadata m = null;
synchronized(this) {
@@ -300,18 +300,18 @@
if(missingURIs) {
if(logMINOR) Logger.minor(this, "Missing URIs");
// Error
- fail(new
InsertException(InsertException.INTERNAL_ERROR, "Missing URIs after encoding",
null), container);
+ fail(new
InsertException(InsertException.INTERNAL_ERROR, "Missing URIs after encoding",
null), container, context);
return;
} else
- cb.onMetadata(m, this, container);
+ cb.onMetadata(m, this, container, context);
}
- private void fail(InsertException e, ObjectContainer container) {
+ private void fail(InsertException e, ObjectContainer container,
ClientContext context) {
synchronized(this) {
if(finished) return;
finished = true;
}
- cb.onFailure(e, this, container);
+ cb.onFailure(e, this, container, context);
}
// FIXME move this to somewhere
@@ -361,7 +361,7 @@
return parent;
}
- public void segmentFinished(SplitFileInserterSegment segment,
ObjectContainer container) {
+ public void segmentFinished(SplitFileInserterSegment segment,
ObjectContainer container, ClientContext context) {
if(logMINOR) Logger.minor(this, "Segment finished: "+segment,
new Exception("debug"));
boolean allGone = true;
if(countDataBlocks > 32)
@@ -381,13 +381,13 @@
InsertException e = segment.getException();
if((e != null) && e.isFatal()) {
- cancel(container);
+ cancel(container, context);
} else {
if(!allGone) return;
}
finished = true;
}
- onAllFinished(container);
+ onAllFinished(container, context);
}
public void segmentFetchable(SplitFileInserterSegment segment,
ObjectContainer container) {
@@ -406,7 +406,7 @@
cb.onFetchable(this, container);
}
- private void onAllFinished(ObjectContainer container) {
+ private void onAllFinished(ObjectContainer container, ClientContext
context) {
if(logMINOR) Logger.minor(this, "All finished");
try {
// Finished !!
@@ -422,24 +422,24 @@
tracker.inc(e.getMode());
}
if(allSucceeded)
- cb.onSuccess(this, container);
+ cb.onSuccess(this, container, context);
else {
-
cb.onFailure(InsertException.construct(tracker), this, container);
+
cb.onFailure(InsertException.construct(tracker), this, container, context);
}
} catch (Throwable t) {
// We MUST tell the parent *something*!
Logger.error(this, "Caught "+t, t);
- cb.onFailure(new
InsertException(InsertException.INTERNAL_ERROR), this, container);
+ cb.onFailure(new
InsertException(InsertException.INTERNAL_ERROR), this, container, context);
}
}
- public void cancel(ObjectContainer container) {
+ public void cancel(ObjectContainer container, ClientContext context) {
synchronized(this) {
if(finished) return;
finished = true;
}
for(int i=0;i<segments.length;i++)
- segments[i].cancel(container);
+ segments[i].cancel(container, context);
}
public void schedule(ObjectContainer container, ClientContext context)
throws InsertException {
Modified:
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java
===================================================================
---
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java
2008-06-05 22:25:19 UTC (rev 20232)
+++
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java
2008-06-05 22:57:27 UTC (rev 20233)
@@ -449,7 +449,7 @@
onEncodedSegment(container, context);
}
if (hasURIs) {
- parent.segmentHasURIs(this, container);
+ parent.segmentHasURIs(this, container, context);
}
boolean fetchable;
synchronized (this) {
@@ -458,9 +458,9 @@
if (fetchable)
parent.segmentFetchable(this, container);
if (fin)
- finish(container);
+ finish(container, context);
if (finished) {
- parent.segmentFinished(this, container);
+ parent.segmentFinished(this, container, context);
}
}
@@ -483,7 +483,7 @@
Logger.error(this, "Caught " + t + " while encoding " +
this, t);
InsertException ex = new InsertException(
InsertException.INTERNAL_ERROR, t,
null);
- finish(ex, container);
+ finish(ex, container, context);
return;
}
@@ -505,7 +505,7 @@
}
}
- private void finish(InsertException ex, ObjectContainer container) {
+ private void finish(InsertException ex, ObjectContainer container,
ClientContext context) {
if (logMINOR)
Logger.minor(this, "Finishing " + this + " with " + ex,
ex);
synchronized (this) {
@@ -514,20 +514,20 @@
finished = true;
toThrow = ex;
}
- parent.segmentFinished(this, container);
+ parent.segmentFinished(this, container, context);
}
- private void finish(ObjectContainer container) {
+ private void finish(ObjectContainer container, ClientContext context) {
synchronized (this) {
if (finished)
return;
finished = true;
toThrow = InsertException.construct(errors);
}
- parent.segmentFinished(this, container);
+ parent.segmentFinished(this, container, context);
}
- public void onEncode(BaseClientKey k, ClientPutState state,
ObjectContainer container) {
+ public void onEncode(BaseClientKey k, ClientPutState state,
ObjectContainer container, ClientContext context) {
ClientCHK key = (ClientCHK) k;
SingleBlockInserter sbi = (SingleBlockInserter) state;
int x = sbi.token;
@@ -563,31 +563,31 @@
}
hasURIs = true;
}
- parent.segmentHasURIs(this, container);
+ parent.segmentHasURIs(this, container, context);
}
- public void onSuccess(ClientPutState state, ObjectContainer container) {
+ public void onSuccess(ClientPutState state, ObjectContainer container,
ClientContext context) {
if (parent.parent.isCancelled()) {
- parent.cancel(container);
+ parent.cancel(container, context);
return;
}
SingleBlockInserter sbi = (SingleBlockInserter) state;
int x = sbi.token;
- completed(x, container);
+ completed(x, container, context);
}
- public void onFailure(InsertException e, ClientPutState state,
ObjectContainer container) {
+ public void onFailure(InsertException e, ClientPutState state,
ObjectContainer container, ClientContext context) {
if (parent.parent.isCancelled()) {
- parent.cancel(container);
+ parent.cancel(container, context);
return;
}
SingleBlockInserter sbi = (SingleBlockInserter) state;
int x = sbi.token;
errors.merge(e);
- completed(x, container);
+ completed(x, container, context);
}
- private void completed(int x, ObjectContainer container) {
+ private void completed(int x, ObjectContainer container, ClientContext
context) {
int total = innerCompleted(x);
if (total == -1)
return;
@@ -596,7 +596,7 @@
}
if (total != dataBlockInserters.length +
checkBlockInserters.length)
return;
- finish(container);
+ finish(container, context);
}
/**
@@ -671,7 +671,7 @@
}
}
- public void cancel(ObjectContainer container) {
+ public void cancel(ObjectContainer container, ClientContext context) {
synchronized (this) {
if (finished)
return;
@@ -699,7 +699,7 @@
checkBlocks[i] = null;
}
}
- parent.segmentFinished(this, container);
+ parent.segmentFinished(this, container, context);
}
public void onTransition(ClientPutState oldState, ClientPutState
newState, ObjectContainer container) {
@@ -707,7 +707,7 @@
+ oldState + " -> " + newState);
}
- public void onMetadata(Metadata m, ClientPutState state,
ObjectContainer container) {
+ public void onMetadata(Metadata m, ClientPutState state,
ObjectContainer container, ClientContext context) {
Logger.error(this, "Got onMetadata from " + state);
}
Modified: branches/db4o/freenet/src/freenet/client/async/USKFetcher.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/USKFetcher.java
2008-06-05 22:25:19 UTC (rev 20232)
+++ branches/db4o/freenet/src/freenet/client/async/USKFetcher.java
2008-06-05 22:57:27 UTC (rev 20233)
@@ -9,6 +9,8 @@
import java.util.LinkedList;
import java.util.Vector;
+import com.db4o.ObjectContainer;
+
import freenet.client.FetchContext;
import freenet.keys.ClientSSKBlock;
import freenet.keys.FreenetURI;
@@ -447,9 +449,9 @@
return origUSK;
}
- public void schedule(long delay) {
+ public void schedule(long delay, ObjectContainer container,
ClientContext context) {
if (delay<=0) {
- schedule();
+ schedule(container, context);
} else {
uskManager.ticker.queueTimedJob(new Runnable() {
public void run() {
@@ -459,7 +461,7 @@
}
}
- public void schedule() {
+ public void schedule(ObjectContainer container, ClientContext context) {
USKAttempt[] attempts;
long lookedUp = uskManager.lookup(origUSK);
synchronized(this) {
Modified: branches/db4o/freenet/src/freenet/node/SendableInsert.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/SendableInsert.java 2008-06-05
22:25:19 UTC (rev 20232)
+++ branches/db4o/freenet/src/freenet/node/SendableInsert.java 2008-06-05
22:57:27 UTC (rev 20233)
@@ -5,6 +5,8 @@
import com.db4o.ObjectContainer;
+import freenet.client.async.ClientContext;
+
/**
* Callback interface for a low level insert, which is immediately sendable.
These
* should be registered on the ClientRequestScheduler when we want to send
them. It will
@@ -14,10 +16,10 @@
public abstract class SendableInsert extends SendableRequest {
/** Called when we successfully insert the data */
- public abstract void onSuccess(Object keyNum, ObjectContainer
container);
+ public abstract void onSuccess(Object keyNum, ObjectContainer
container, ClientContext context);
/** Called when we don't! */
- public abstract void onFailure(LowLevelPutException e, Object keyNum,
ObjectContainer container);
+ public abstract void onFailure(LowLevelPutException e, Object keyNum,
ObjectContainer container, ClientContext context);
public void internalError(Object keyNum, Throwable t, RequestScheduler
sched, ObjectContainer container) {
onFailure(new
LowLevelPutException(LowLevelPutException.INTERNAL_ERROR, t.getMessage(), t),
keyNum, container);
Modified: branches/db4o/freenet/src/freenet/node/SimpleSendableInsert.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/SimpleSendableInsert.java
2008-06-05 22:25:19 UTC (rev 20232)
+++ branches/db4o/freenet/src/freenet/node/SimpleSendableInsert.java
2008-06-05 22:57:27 UTC (rev 20233)
@@ -5,6 +5,7 @@
import com.db4o.ObjectContainer;
+import freenet.client.async.ClientContext;
import freenet.client.async.ClientRequestScheduler;
import freenet.client.async.ClientRequester;
import freenet.keys.CHKBlock;
@@ -44,13 +45,13 @@
this.scheduler = scheduler;
}
- public void onSuccess(Object keyNum, ObjectContainer container) {
+ public void onSuccess(Object keyNum, ObjectContainer container,
ClientContext context) {
// Yay!
if(Logger.shouldLog(Logger.MINOR, this))
Logger.minor(this, "Finished insert of "+block);
}
- public void onFailure(LowLevelPutException e, Object keyNum,
ObjectContainer container) {
+ public void onFailure(LowLevelPutException e, Object keyNum,
ObjectContainer container, ClientContext context) {
if(Logger.shouldLog(Logger.MINOR, this))
Logger.minor(this, "Failed insert of "+block+": "+e);
}