Author: toad
Date: 2008-04-15 17:00:04 +0000 (Tue, 15 Apr 2008)
New Revision: 19349
Modified:
trunk/freenet/src/freenet/clients/http/QueueToadlet.java
trunk/freenet/src/freenet/node/fcp/FCPClient.java
trunk/freenet/src/freenet/node/fcp/RequestCompletionCallback.java
Log:
Automatically remove alerts when the file is removed from the queue.
Modified: trunk/freenet/src/freenet/clients/http/QueueToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/QueueToadlet.java 2008-04-15
11:43:29 UTC (rev 19348)
+++ trunk/freenet/src/freenet/clients/http/QueueToadlet.java 2008-04-15
17:00:04 UTC (rev 19349)
@@ -20,6 +20,7 @@
import java.text.NumberFormat;
import java.util.Collections;
import java.util.Comparator;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
@@ -1072,6 +1073,8 @@
*/
private final HashSet completedRequestIdentifiers = new HashSet();
+ private final HashMap alertsByIdentifier = new HashMap();
+
public void notifyFailure(ClientRequest req) {
// FIXME do something???
}
@@ -1209,14 +1212,22 @@
L10n.addL10nSubstitution(text,
"QueueToadlet.downloadSucceeded",
new String[] { "link", "/link",
"origlink", "/origlink", "filename", "size" },
new String[] { "<a
href=\"/queue/"+uri.toACIIString()+"\">", "</a>", "<a
href=\"/"+uri.toACIIString()+"\">", "</a>", name, SizeUtil.formatSize(size) } );
- core.alerts.register(new SimpleHTMLUserAlert(true,
title, text, UserAlert.MINOR) {
+ UserAlert alert =
+ new SimpleHTMLUserAlert(true, title, text,
UserAlert.MINOR) {
public void onDismiss() {
synchronized(completedRequestIdentifiers) {
completedRequestIdentifiers.remove(identifier);
}
+ synchronized(alertsByIdentifier) {
+
alertsByIdentifier.remove(identifier);
+ }
saveCompletedIdentifiersOffThread();
}
- });
+ };
+ core.alerts.register(alert);
+ synchronized(alertsByIdentifier) {
+ alertsByIdentifier.put(identifier, alert);
+ }
} else if(req instanceof ClientPut) {
FreenetURI uri = ((ClientPut)req).getFinalURI();
long size = ((ClientPut)req).getDataSize();
@@ -1226,14 +1237,22 @@
L10n.addL10nSubstitution(text,
"QueueToadlet.uploadSucceeded",
new String[] { "link", "/link",
"filename", "size" },
new String[] { "<a
href=\"/"+uri.toACIIString()+"\">", "</a>", name, SizeUtil.formatSize(size) } );
- core.alerts.register(new SimpleHTMLUserAlert(true,
title, text, UserAlert.MINOR) {
+ UserAlert alert =
+ new SimpleHTMLUserAlert(true, title, text,
UserAlert.MINOR) {
public void onDismiss() {
synchronized(completedRequestIdentifiers) {
completedRequestIdentifiers.remove(identifier);
}
+ synchronized(alertsByIdentifier) {
+
alertsByIdentifier.remove(identifier);
+ }
saveCompletedIdentifiersOffThread();
}
- });
+ };
+ core.alerts.register(alert);
+ synchronized(alertsByIdentifier) {
+ alertsByIdentifier.put(identifier, alert);
+ }
} else if(req instanceof ClientPutDir) {
FreenetURI uri = ((ClientPutDir)req).getFinalURI();
long size = ((ClientPutDir)req).getTotalDataSize();
@@ -1244,14 +1263,22 @@
L10n.addL10nSubstitution(text,
"QueueToadlet.siteUploadSucceeded",
new String[] { "link", "/link",
"filename", "size", "files" },
new String[] { "<a
href=\"/"+uri.toACIIString()+"\">", "</a>", name, SizeUtil.formatSize(size),
Integer.toString(files) } );
- core.alerts.register(new SimpleHTMLUserAlert(true,
title, text, UserAlert.MINOR) {
+ UserAlert alert =
+ new SimpleHTMLUserAlert(true, title, text,
UserAlert.MINOR) {
public void onDismiss() {
synchronized(completedRequestIdentifiers) {
completedRequestIdentifiers.remove(identifier);
}
+ synchronized(alertsByIdentifier) {
+
alertsByIdentifier.remove(identifier);
+ }
saveCompletedIdentifiersOffThread();
}
- });
+ };
+ core.alerts.register(alert);
+ synchronized(alertsByIdentifier) {
+ alertsByIdentifier.put(identifier, alert);
+ }
}
}
@@ -1259,4 +1286,17 @@
return L10n.getString("QueueToadlet."+key, pattern, value);
}
+ public void onRemove(ClientRequest req) {
+ String identifier = req.getIdentifier();
+ synchronized(completedRequestIdentifiers) {
+ completedRequestIdentifiers.remove(identifier);
+ }
+ UserAlert alert;
+ synchronized(alertsByIdentifier) {
+ alert = (UserAlert)
alertsByIdentifier.remove(identifier);
+ }
+ core.alerts.unregister(alert);
+ saveCompletedIdentifiersOffThread();
+ }
+
}
Modified: trunk/freenet/src/freenet/node/fcp/FCPClient.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/FCPClient.java 2008-04-15 11:43:29 UTC
(rev 19348)
+++ trunk/freenet/src/freenet/node/fcp/FCPClient.java 2008-04-15 17:00:04 UTC
(rev 19349)
@@ -159,6 +159,8 @@
if(logMINOR) Logger.minor(this, "Killing request "+req);
req.cancel();
}
+ if(completionCallback != null)
+ completionCallback.onRemove(req);
server.forceStorePersistentRequests();
}
Modified: trunk/freenet/src/freenet/node/fcp/RequestCompletionCallback.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/RequestCompletionCallback.java
2008-04-15 11:43:29 UTC (rev 19348)
+++ trunk/freenet/src/freenet/node/fcp/RequestCompletionCallback.java
2008-04-15 17:00:04 UTC (rev 19349)
@@ -12,4 +12,9 @@
*/
public void notifyFailure(ClientRequest req);
+ /**
+ * Callback when a request is removed
+ */
+ public void onRemove(ClientRequest req);
+
}