Author: toad
Date: 2006-01-27 01:02:20 +0000 (Fri, 27 Jan 2006)
New Revision: 7946
Modified:
trunk/freenet/src/freenet/node/Version.java
trunk/freenet/src/freenet/node/fcp/ClientGet.java
trunk/freenet/src/freenet/node/fcp/ClientGetMessage.java
trunk/freenet/src/freenet/node/fcp/ClientPut.java
trunk/freenet/src/freenet/node/fcp/ClientPutMessage.java
trunk/freenet/src/freenet/node/fcp/ProtocolErrorMessage.java
Log:
397:
Add optional PriorityClass to ClientGet/ClientPut.
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-01-27 00:53:48 UTC (rev
7945)
+++ trunk/freenet/src/freenet/node/Version.java 2006-01-27 01:02:20 UTC (rev
7946)
@@ -20,7 +20,7 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- public static final int buildNumber = 396;
+ public static final int buildNumber = 397;
/** Oldest build of Fred we will talk to */
public static final int lastGoodBuild = 392;
Modified: trunk/freenet/src/freenet/node/fcp/ClientGet.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientGet.java 2006-01-27 00:53:48 UTC
(rev 7945)
+++ trunk/freenet/src/freenet/node/fcp/ClientGet.java 2006-01-27 01:02:20 UTC
(rev 7946)
@@ -35,7 +35,7 @@
public ClientGet(FCPConnectionHandler handler, ClientGetMessage
message) {
uri = message.uri;
// FIXME
- this.priorityClass = 0;
+ this.priorityClass = message.priorityClass;
// Create a Fetcher directly in order to get more fine-grained
control,
// since the client may override a few context elements.
this.handler = handler;
Modified: trunk/freenet/src/freenet/node/fcp/ClientGetMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientGetMessage.java 2006-01-27
00:53:48 UTC (rev 7945)
+++ trunk/freenet/src/freenet/node/fcp/ClientGetMessage.java 2006-01-27
01:02:20 UTC (rev 7946)
@@ -4,6 +4,7 @@
import freenet.keys.FreenetURI;
import freenet.node.Node;
+import freenet.node.RequestStarter;
import freenet.support.SimpleFieldSet;
/**
@@ -21,6 +22,7 @@
* MaxSize=100 // maximum size of returned data
* MaxTempSize=1000 // maximum size of intermediary data
* MaxRetries=100 // automatic retry supported as an option
+ * PriorityClass=1 // priority class 1 = interactive
* EndMessage
*/
public class ClientGetMessage extends FCPMessage {
@@ -35,6 +37,7 @@
final long maxSize;
final long maxTempSize;
final int maxRetries;
+ final short priorityClass;
// FIXME move these to the actual getter process
static final int RETURN_TYPE_DIRECT = 0;
@@ -98,6 +101,19 @@
throw new
MessageInvalidException(ProtocolErrorMessage.ERROR_PARSING_NUMBER, "Error
parsing MaxSize field: "+e.getMessage());
}
}
+ String priorityString = fs.get("PriorityClass");
+ if(priorityString == null) {
+ // defaults to the one just below fproxy
+ priorityClass =
RequestStarter.IMMEDIATE_SPLITFILE_PRIORITY_CLASS;
+ } else {
+ try {
+ priorityClass =
Short.parseShort(priorityString, 10);
+ if(priorityClass <
RequestStarter.MAXIMUM_PRIORITY_CLASS || priorityClass >
RequestStarter.MINIMUM_PRIORITY_CLASS)
+ throw new
MessageInvalidException(ProtocolErrorMessage.INVALID_FIELD, "Valid priorities
are from "+RequestStarter.MAXIMUM_PRIORITY_CLASS+" to
"+RequestStarter.MINIMUM_PRIORITY_CLASS);
+ } catch (NumberFormatException e) {
+ throw new
MessageInvalidException(ProtocolErrorMessage.ERROR_PARSING_NUMBER, "Error
parsing PriorityClass field: "+e.getMessage());
+ }
+ }
}
public SimpleFieldSet getFieldSet() {
Modified: trunk/freenet/src/freenet/node/fcp/ClientPut.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPut.java 2006-01-27 00:53:48 UTC
(rev 7945)
+++ trunk/freenet/src/freenet/node/fcp/ClientPut.java 2006-01-27 01:02:20 UTC
(rev 7946)
@@ -37,7 +37,7 @@
this.handler = handler;
this.identifier = message.identifier;
this.getCHKOnly = message.getCHKOnly;
- this.priorityClass = 0;
+ this.priorityClass = message.priorityClass;
ctx = new InserterContext(handler.defaultInsertContext, new
SimpleEventProducer());
ctx.eventProducer.addEventListener(this);
ctx.maxInsertRetries = message.maxRetries;
Modified: trunk/freenet/src/freenet/node/fcp/ClientPutMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPutMessage.java 2006-01-27
00:53:48 UTC (rev 7945)
+++ trunk/freenet/src/freenet/node/fcp/ClientPutMessage.java 2006-01-27
01:02:20 UTC (rev 7946)
@@ -4,6 +4,7 @@
import freenet.keys.FreenetURI;
import freenet.node.Node;
+import freenet.node.RequestStarter;
import freenet.support.SimpleFieldSet;
/**
@@ -15,6 +16,7 @@
* Identifier=Insert-1 // identifier, as always
* Verbosity=0 // just report when complete
* MaxRetries=999999 // lots of retries
+ * PriorityClass=1 // fproxy priority level
* Data
*
* Neither IgnoreDS nor DSOnly make sense for inserts.
@@ -30,6 +32,7 @@
final int verbosity;
final int maxRetries;
final boolean getCHKOnly;
+ final short priorityClass;
public ClientPutMessage(SimpleFieldSet fs) throws
MessageInvalidException {
try {
@@ -74,6 +77,19 @@
}
}
getCHKOnly = Boolean.getBoolean(fs.get("GetCHKOnly"));
+ String priorityString = fs.get("PriorityClass");
+ if(priorityString == null) {
+ // defaults to the one just below fproxy
+ priorityClass =
RequestStarter.IMMEDIATE_SPLITFILE_PRIORITY_CLASS;
+ } else {
+ try {
+ priorityClass =
Short.parseShort(priorityString, 10);
+ if(priorityClass <
RequestStarter.MAXIMUM_PRIORITY_CLASS || priorityClass >
RequestStarter.MINIMUM_PRIORITY_CLASS)
+ throw new
MessageInvalidException(ProtocolErrorMessage.INVALID_FIELD, "Valid priorities
are from "+RequestStarter.MAXIMUM_PRIORITY_CLASS+" to
"+RequestStarter.MINIMUM_PRIORITY_CLASS);
+ } catch (NumberFormatException e) {
+ throw new
MessageInvalidException(ProtocolErrorMessage.ERROR_PARSING_NUMBER, "Error
parsing PriorityClass field: "+e.getMessage());
+ }
+ }
}
public SimpleFieldSet getFieldSet() {
Modified: trunk/freenet/src/freenet/node/fcp/ProtocolErrorMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ProtocolErrorMessage.java
2006-01-27 00:53:48 UTC (rev 7945)
+++ trunk/freenet/src/freenet/node/fcp/ProtocolErrorMessage.java
2006-01-27 01:02:20 UTC (rev 7946)
@@ -23,6 +23,7 @@
static final int MISSING_FIELD = 5;
static final int ERROR_PARSING_NUMBER = 6;
static final int INVALID_MESSAGE = 7;
+ static final int INVALID_FIELD = 8;
final int code;
final String extra;
@@ -44,6 +45,8 @@
return "Error parsing a numeric field";
case INVALID_MESSAGE:
return "Don't know what to do with message";
+ case INVALID_FIELD:
+ return "Invalid field value";
default:
Logger.error(this, "Unknown error code: "+code, new
Exception("debug"));
return "(Unknown)";