Author: bombe
Date: 2006-08-03 13:29:04 +0000 (Thu, 03 Aug 2006)
New Revision: 9852
Modified:
trunk/freenet/src/freenet/clients/http/QueueToadlet.java
Log:
make download priorities changeable via queue toadlet
Modified: trunk/freenet/src/freenet/clients/http/QueueToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/QueueToadlet.java 2006-08-03
13:17:15 UTC (rev 9851)
+++ trunk/freenet/src/freenet/clients/http/QueueToadlet.java 2006-08-03
13:29:04 UTC (rev 9852)
@@ -17,6 +17,7 @@
import freenet.node.fcp.FCPServer;
import freenet.node.fcp.MessageInvalidException;
import freenet.node.Node;
+import freenet.node.RequestStarter;
import freenet.support.HTMLDecoder;
import freenet.support.HTMLEncoder;
import freenet.support.Logger;
@@ -27,6 +28,8 @@
public class QueueToadlet extends Toadlet {
+ private static final String[] priorityClasses = new String[] {
"emergency", "very high", "high", "medium", "low", "very low", "will never
finish" };
+
private Node node;
final FCPServer fcp;
@@ -99,6 +102,18 @@
fcp.makePersistentGlobalRequest(fetchURI,
expectedMIMEType, persistence, returnType);
writePermanentRedirect(ctx, "Done", "/queue/");
return;
+ } else if (request.isParameterSet("change_priority")) {
+ String identifier =
HTMLDecoder.decode(request.getParam("identifier"));
+ short newPriority =
Short.parseShort(request.getParam("priority"));
+ ClientRequest[] clientRequests =
fcp.getGlobalRequests();
+ for (int requestIndex = 0, requestCount =
clientRequests.length; requestIndex < requestCount; requestIndex++) {
+ ClientRequest clientRequest =
clientRequests[requestIndex];
+ if
(identifier.equals(clientRequest.getIdentifier())) {
+
clientRequest.setPriorityClass(newPriority);
+ }
+ }
+ writePermanentRedirect(ctx, "Done", "/queue/");
+ return;
}
this.handleGet(uri, ctx);
}
@@ -388,7 +403,7 @@
writeBigHeading("Requests in progress (" +
(uncompletedDownload.size() + uncompletedUpload.size() +
uncompletedDirUpload.size()) + ")", buf, "requests_in_progress");
if(!uncompletedDownload.isEmpty()) {
if
(node.getToadletContainer().isAdvancedDarknetEnabled())
- writeTableHead("Downloads in progress",
new String[] { "", "Identifier", "Filename", "Size", "MIME-Type", "Progress",
"Persistence", "Key" }, buf);
+ writeTableHead("Downloads in progress",
new String[] { "", "Identifier", "Filename", "Priority", "Size", "MIME-Type",
"Progress", "Persistence", "Key" }, buf);
else
writeTableHead("Downloads in progress",
new String[] { "", "Filename", "Size", "MIME-Type", "Progress", "Persistence",
"Key" }, buf);
for(Iterator i =
uncompletedDownload.iterator();i.hasNext();) {
@@ -401,6 +416,9 @@
writeDirectCell(buf);
else
writeFilenameCell(p.getDestFilename(), buf);
+ if
(node.getToadletContainer().isAdvancedDarknetEnabled()) {
+
writePriorityCell(p.getIdentifier(), p.getPriority(), buf);
+ }
writeSizeCell(p.getDataSize(), buf);
writeTypeCell(p.getMIMEType(), buf);
writeProgressFractionCell(p, buf);
@@ -552,6 +570,27 @@
buf.append("</td>\n");
}
+ private void writePriorityCell(String identifier, short priorityClass,
StringBuffer buf) {
+ buf.append("<td class=\"nowrap\">");
+ buf.append("<form action=\"/queue/\" method=\"post\">");
+ buf.append("<input type=\"hidden\" name=\"formPassword\"
value=\"").append(node.formPassword).append("\">");
+ buf.append("<input type=\"hidden\" name=\"identifier\"
value=\"").append(HTMLEncoder.encode(identifier)).append("\">");
+ buf.append("<select name=\"priority\">");
+ for (int p = 0; p < RequestStarter.NUMBER_OF_PRIORITY_CLASSES;
p++) {
+ buf.append("<option name=\"priority\"
value=\"").append(p);
+ if (p == priorityClass) {
+ buf.append("\" selected=\"selected");
+ }
+ buf.append("\">");
+ buf.append(priorityClasses[p]);
+ buf.append("</option>");
+ }
+ buf.append("</select>");
+ buf.append("<input type=\"submit\" name=\"change_priority\"
value=\"Change\" />");
+ buf.append("</form>");
+ buf.append("</td>");
+ }
+
private void writeDeleteCell(ClientRequest p, StringBuffer buf) {
buf.append("<td>");
buf.append("<form action=\"/queue/\" method=\"post\">");