Author: toad
Date: 2008-07-10 21:29:52 +0000 (Thu, 10 Jul 2008)
New Revision: 21039
Modified:
branches/db4o/freenet/src/freenet/client/async/BaseSingleFileFetcher.java
branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
Log:
Delete the old RegisterMe.
Modified:
branches/db4o/freenet/src/freenet/client/async/BaseSingleFileFetcher.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/BaseSingleFileFetcher.java
2008-07-10 21:15:33 UTC (rev 21038)
+++ branches/db4o/freenet/src/freenet/client/async/BaseSingleFileFetcher.java
2008-07-10 21:29:52 UTC (rev 21039)
@@ -228,7 +228,7 @@
}
public void schedule(ObjectContainer container, ClientContext context,
boolean delayed) {
- getScheduler(context).register(this, new SendableGet[] { this
}, delayed, persistent, true, ctx.blocks);
+ getScheduler(context).register(this, new SendableGet[] { this
}, delayed, persistent, true, ctx.blocks, null);
}
public SendableGet getRequest(Key key, ObjectContainer container) {
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
2008-07-10 21:15:33 UTC (rev 21038)
+++ branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
2008-07-10 21:29:52 UTC (rev 21039)
@@ -13,10 +13,8 @@
import freenet.config.SubConfig;
import freenet.crypt.RandomSource;
import freenet.keys.ClientKey;
-import freenet.keys.ClientKeyBlock;
import freenet.keys.Key;
import freenet.keys.KeyBlock;
-import freenet.keys.KeyVerifyException;
import freenet.node.BaseSendableGet;
import freenet.node.KeysFetchingLocally;
import freenet.node.LowLevelGetException;
@@ -192,19 +190,19 @@
* NOTE: delayedStoreCheck/probablyNotInStore is unnecessary because we
only
* register the listener once.
*/
- public void register(final GotKeyListener listener, final SendableGet[]
getters, boolean registerOffThread, final boolean persistent, boolean
onDatabaseThread, final BlockSet blocks) {
+ public void register(final GotKeyListener listener, final SendableGet[]
getters, boolean registerOffThread, final boolean persistent, boolean
onDatabaseThread, final BlockSet blocks, final RegisterMe oldReg) {
logMINOR = Logger.shouldLog(Logger.MINOR, this);
if(logMINOR)
Logger.minor(this,
"register("+persistent+","+listener+","+getters+","+registerOffThread);
if(persistent) {
if(onDatabaseThread) {
- innerRegister(listener, getters,
registerOffThread, persistent, blocks);
+ innerRegister(listener, getters,
registerOffThread, persistent, blocks, oldReg);
} else {
jobRunner.queue(new DBJob() {
public void run(ObjectContainer
container, ClientContext context) {
// registerOffThread would be
pointless because this is a separate job.
- innerRegister(listener,
getters, false, persistent, blocks);
+ innerRegister(listener,
getters, false, persistent, blocks, oldReg);
}
}, NativeThread.NORM_PRIORITY, false);
@@ -230,17 +228,20 @@
}
- private void innerRegister(final GotKeyListener listener, final
SendableGet[] getters, boolean registerOffThread, boolean persistent, final
BlockSet blocks) {
+ private void innerRegister(final GotKeyListener listener, final
SendableGet[] getters, boolean registerOffThread, boolean persistent, final
BlockSet blocks, RegisterMe reg) {
if(listener != null) {
if(registerOffThread) {
short prio =
listener.getPriorityClass(selectorContainer);
- RegisterMe regme = new RegisterMe(listener,
getters, prio, schedCore, blocks);
- selectorContainer.set(regme);
+ if(reg == null) {
+ reg = new RegisterMe(listener, getters,
prio, schedCore, blocks);
+ selectorContainer.set(reg);
+ }
+ final RegisterMe regme = reg;
if(logMINOR) Logger.minor(this, "Added regme:
"+regme);
jobRunner.queue(new DBJob() {
public void run(ObjectContainer
container, ClientContext context) {
- register(listener, getters,
false, true, true, blocks);
+ register(listener, getters,
false, true, true, blocks, regme);
}
}, NativeThread.NORM_PRIORITY, false);
@@ -248,12 +249,16 @@
} else {
short prio =
listener.getPriorityClass(selectorContainer);
schedCore.addPendingKeys(listener,
selectorContainer);
- final RegisterMe regme;
- if(getters != null) {
- regme = new RegisterMe(null, getters,
prio, schedCore, blocks);
- selectorContainer.set(regme);
- if(logMINOR) Logger.minor(this, "Added
regme: "+regme);
- } else regme = null; // Nothing to finish
registering.
+ if(reg == null && getters != null) {
+ reg = new RegisterMe(null, getters,
prio, schedCore, blocks);
+ selectorContainer.set(reg);
+ if(logMINOR) Logger.minor(this, "Added
regme: "+reg);
+ } else {
+ if(reg != null)
+ selectorContainer.delete(reg);
+ reg = null; // Nothing to finish
registering.
+ }
+ final RegisterMe regme = reg;
// Check the datastore before proceding.
final Key[] keys =
listener.listKeys(selectorContainer);
final boolean dontCache =
listener.dontCache(selectorContainer);
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
===================================================================
---
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
2008-07-10 21:15:33 UTC (rev 21038)
+++
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
2008-07-10 21:29:52 UTC (rev 21039)
@@ -553,7 +553,7 @@
Logger.minor(this, "Running RegisterMe
for "+reg.listener+" and "+reg.getters+" : "+reg.key.addedTime+" :
"+reg.key.priority);
// Don't need to activate, fields should exist?
FIXME
try {
- sched.register(reg.listener,
reg.getters, false, true, true, reg.blocks);
+ sched.register(reg.listener,
reg.getters, false, true, true, reg.blocks, null);
} catch (Throwable t) {
Logger.error(this, "Caught "+t+"
running RegisterMeRunner", t);
// Cancel the request, and commit so it
isn't tried again.
Modified:
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
===================================================================
---
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
2008-07-10 21:15:33 UTC (rev 21038)
+++
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
2008-07-10 21:29:52 UTC (rev 21039)
@@ -457,7 +457,7 @@
if(persistent)
container.set(blockNums);
if(schedule)
- context.getChkFetchScheduler().register(null, new
SendableGet[] { this }, false, persistent, true, null);
+ context.getChkFetchScheduler().register(null, new
SendableGet[] { this }, false, persistent, true, null, null);
}
public String toString() {
@@ -586,7 +586,7 @@
}
public void schedule(ObjectContainer container, ClientContext context,
boolean firstTime, boolean regmeOnly) {
- getScheduler(context).register(firstTime ? segment : null, new
SendableGet[] { this }, regmeOnly, persistent, true,
segment.blockFetchContext.blocks);
+ getScheduler(context).register(firstTime ? segment : null, new
SendableGet[] { this }, regmeOnly, persistent, true,
segment.blockFetchContext.blocks, null);
}
public void removeBlockNum(int blockNum) {