Author: toad
Date: 2008-06-26 00:45:18 +0000 (Thu, 26 Jun 2008)
New Revision: 20731
Removed:
branches/db4o/freenet/src/freenet/client/async/HasActivationCallback.java
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientPutter.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
Log:
Remove "if(persistent) container.activate(this, 1)" - it makes NO sense!
persistent will be false if we haven't been activated.
The caller must do the activation.
Modified: branches/db4o/freenet/src/freenet/client/async/ClientPutter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientPutter.java
2008-06-26 00:35:41 UTC (rev 20730)
+++ branches/db4o/freenet/src/freenet/client/async/ClientPutter.java
2008-06-26 00:45:18 UTC (rev 20731)
@@ -242,8 +242,11 @@
if(startedStarting) return;
startedStarting = true;
}
- if(persistent())
+ if(persistent()) {
container.set(this);
+ if(oldState != null)
+ container.activate(oldState, 1);
+ }
if(oldState != null) oldState.cancel(container, context);
onFailure(new InsertException(InsertException.CANCELLED), null,
container, context);
}
Deleted:
branches/db4o/freenet/src/freenet/client/async/HasActivationCallback.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/HasActivationCallback.java
2008-06-26 00:35:41 UTC (rev 20730)
+++ branches/db4o/freenet/src/freenet/client/async/HasActivationCallback.java
2008-06-26 00:45:18 UTC (rev 20731)
@@ -1,15 +0,0 @@
-package freenet.client.async;
-
-import com.db4o.ObjectContainer;
-
-/**
- * Public interface implemented by nonpublic classes (e.g. nonpublic inner
- * classes) that want db4o to call their objectOnActivation callback.
- * @author toad
- *
- */
-public interface HasActivationCallback {
-
- public void objectOnActivate(ObjectContainer container);
-
-}
Modified: branches/db4o/freenet/src/freenet/client/async/SingleFileInserter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SingleFileInserter.java
2008-06-26 00:35:41 UTC (rev 20730)
+++ branches/db4o/freenet/src/freenet/client/async/SingleFileInserter.java
2008-06-26 00:45:18 UTC (rev 20731)
@@ -329,8 +329,11 @@
* When we get the metadata, start inserting it to our target key.
* When we have inserted both the metadata and the splitfile,
* call the master callback.
+ *
+ * This class has to be public so that db4o can access
objectOnActivation
+ * through reflection.
*/
- class SplitHandler implements PutCompletionCallback, ClientPutState,
HasActivationCallback {
+ public class SplitHandler implements PutCompletionCallback,
ClientPutState {
ClientPutState sfi;
ClientPutState metadataPutter;
@@ -610,8 +613,13 @@
oldSFI = sfi;
oldMetadataPutter = metadataPutter;
}
- if(persistent)
+ if(persistent) {
container.set(this);
+ if(oldSFI != null)
+ container.activate(oldSFI, 1);
+ if(oldMetadataPutter != null)
+ container.activate(oldMetadataPutter,
1);
+ }
if(oldSFI != null)
oldSFI.cancel(container, context);
if(oldMetadataPutter != null)
@@ -727,6 +735,8 @@
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.
+ if(persistent)
+
container.activate(splitInserter, 1);
((SplitFileInserter)splitInserter).forceEncode(container, context);
}
} catch (InsertException e1) {
Modified: branches/db4o/freenet/src/freenet/client/async/SplitFileInserter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileInserter.java
2008-06-26 00:35:41 UTC (rev 20730)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileInserter.java
2008-06-26 00:45:18 UTC (rev 20731)
@@ -253,9 +253,6 @@
}
public void encodedSegment(SplitFileInserterSegment segment,
ObjectContainer container, ClientContext context) {
- if(persistent) {
- container.activate(this, 1);
- }
if(logMINOR) Logger.minor(this, "Encoded segment
"+segment.segNo+" of "+this);
boolean ret = false;
boolean encode;
@@ -302,7 +299,6 @@
}
private void encodeMetadata(ObjectContainer container, ClientContext
context) {
- container.activate(this, 1);
boolean missingURIs;
Metadata m = null;
synchronized(this) {
@@ -392,13 +388,11 @@
}
public void segmentFinished(SplitFileInserterSegment segment,
ObjectContainer container, ClientContext context) {
- if(persistent)
- container.activate(this, 1);
if(logMINOR) Logger.minor(this, "Segment finished: "+segment,
new Exception("debug"));
boolean allGone = true;
if(countDataBlocks > 32) {
if(persistent)
- container.activate(this, 1);
+ container.activate(parent, 1);
parent.onMajorProgress();
}
synchronized(this) {
@@ -428,8 +422,6 @@
}
public void segmentFetchable(SplitFileInserterSegment segment,
ObjectContainer container) {
- if(persistent)
- container.activate(this, 1);
if(logMINOR) Logger.minor(this, "Segment fetchable: "+segment);
synchronized(this) {
if(finished) return;
@@ -450,8 +442,6 @@
}
private void onAllFinished(ObjectContainer container, ClientContext
context) {
- if(persistent)
- container.activate(this, 1);
if(logMINOR) Logger.minor(this, "All finished");
try {
// Finished !!
@@ -483,8 +473,6 @@
}
public void cancel(ObjectContainer container, ClientContext context) {
- if(persistent)
- container.activate(this, 1);
synchronized(this) {
if(finished) return;
finished = true;
Modified:
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java
===================================================================
---
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java
2008-06-26 00:35:41 UTC (rev 20730)
+++
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java
2008-06-26 00:45:18 UTC (rev 20731)
@@ -544,8 +544,10 @@
finished = true;
toThrow = ex;
}
- if(persistent)
+ if(persistent) {
+ container.activate(parent, 1);
container.set(this);
+ }
parent.segmentFinished(this, container, context);
}
@@ -558,8 +560,10 @@
finished = true;
toThrow = InsertException.construct(errors);
}
- if(persistent)
+ if(persistent) {
container.set(this);
+ container.activate(parent, 1);
+ }
parent.segmentFinished(this, container, context);
}
@@ -643,6 +647,8 @@
if (total == -1)
return;
if (total == dataBlockInserters.length) {
+ if(persistent)
+ container.activate(parent, 1);
parent.segmentFetchable(this, container);
}
if (total != dataBlockInserters.length +
checkBlockInserters.length)
@@ -748,6 +754,8 @@
sbi.cancel(container, context);
Bucket d = dataBlocks[i];
if (d != null) {
+ if(persistent)
+ container.activate(d, 5);
d.free();
dataBlocks[i] = null;
}
@@ -758,12 +766,16 @@
sbi.cancel(container, context);
Bucket d = checkBlocks[i];
if (d != null) {
+ if(persistent)
+ container.activate(d, 5);
d.free();
checkBlocks[i] = null;
}
}
- if(persistent)
+ if(persistent) {
container.set(this);
+ container.activate(parent, 1);
+ }
parent.segmentFinished(this, container, context);
}