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)";


Reply via email to