Author: zothar
Date: 2006-07-03 01:03:12 +0000 (Mon, 03 Jul 2006)
New Revision: 9435

Added:
   trunk/freenet/src/freenet/node/fcp/ModifyPeer.java
Modified:
   trunk/freenet/src/freenet/node/Version.java
   trunk/freenet/src/freenet/node/fcp/FCPMessage.java
   trunk/freenet/src/freenet/node/fcp/ProtocolErrorMessage.java
Log:
850: Added support for ModifyPeer client-to-node FCP message for changing the 
isDisabled and isListenOnly settings.

Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-07-02 20:57:57 UTC (rev 
9434)
+++ trunk/freenet/src/freenet/node/Version.java 2006-07-03 01:03:12 UTC (rev 
9435)
@@ -18,7 +18,7 @@
        public static final String protocolVersion = "1.0";

        /** The build number of the current revision */
-       private static final int buildNumber = 849;
+       private static final int buildNumber = 850;

        /** Oldest build of Fred we will talk to */
        private static final int oldLastGoodBuild = 839;

Modified: trunk/freenet/src/freenet/node/fcp/FCPMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/FCPMessage.java  2006-07-02 20:57:57 UTC 
(rev 9434)
+++ trunk/freenet/src/freenet/node/fcp/FCPMessage.java  2006-07-03 01:03:12 UTC 
(rev 9435)
@@ -46,6 +46,8 @@
                        return new RemovePersistentRequest(fs);
                if(name.equals(WatchGlobal.name))
                        return new WatchGlobal(fs);
+               if(name.equals(ModifyPeer.name))
+                       return new ModifyPeer(fs);
                if(name.equals(ModifyPersistentRequest.name))
                        return new ModifyPersistentRequest(fs);
                if(name.equals(ClientPutDiskDirMessage.name))

Added: trunk/freenet/src/freenet/node/fcp/ModifyPeer.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ModifyPeer.java  2006-07-02 20:57:57 UTC 
(rev 9434)
+++ trunk/freenet/src/freenet/node/fcp/ModifyPeer.java  2006-07-03 01:03:12 UTC 
(rev 9435)
@@ -0,0 +1,66 @@
+package freenet.node.fcp;
+
+import java.io.File;
+
+import freenet.keys.FreenetURI;
+import freenet.node.Node;
+import freenet.node.PeerNode;
+import freenet.support.Fields;
+import freenet.support.SimpleFieldSet;
+
+public class ModifyPeer extends FCPMessage {
+
+       static final String name = "ModifyPeer";
+       
+       final SimpleFieldSet fs;
+       
+       public ModifyPeer(SimpleFieldSet fs) {
+               this.fs = fs;
+               //this.withMetadata = withMetadata;
+               //this.withVolatile = withVolatile;
+       }
+
+       public SimpleFieldSet getFieldSet() {
+               return new SimpleFieldSet(false);
+       }
+
+       public String getName() {
+               return name;
+       }
+
+       public void run(FCPConnectionHandler handler, Node node) throws 
MessageInvalidException {
+               String nodeIdentifier = fs.get("NodeIdentifier");
+               PeerNode pn = node.getPeerNode(nodeIdentifier);
+               if(pn == null) {
+                       ProtocolErrorMessage msg = new 
ProtocolErrorMessage(ProtocolErrorMessage.NO_SUCH_NODE_IDENTIFIER, false, null, 
nodeIdentifier);
+                       handler.outputHandler.queue(msg);
+                       return;
+               }
+               String isDisabledString = fs.get("IsDisabled");
+               if(isDisabledString != null) {
+                       if(!isDisabledString.equals("")) {
+                               if(Fields.stringToBool(isDisabledString, 
false)) {
+                                       pn.disablePeer();
+                               } else {
+                                       pn.enablePeer();
+                               }
+                       } else {
+                               ProtocolErrorMessage msg = new 
ProtocolErrorMessage(ProtocolErrorMessage.MESSAGE_PARSE_ERROR, false, 
"IsDisabled had no value", nodeIdentifier);
+                               handler.outputHandler.queue(msg);
+                               return;
+                       }
+               }
+               String isListenOnlyString = fs.get("IsListenOnly");
+               if(isListenOnlyString != null) {
+                       if(!isListenOnlyString.equals("")) {
+                               
pn.setListenOnly(Fields.stringToBool(isListenOnlyString, true));
+                       } else {
+                               ProtocolErrorMessage msg = new 
ProtocolErrorMessage(ProtocolErrorMessage.MESSAGE_PARSE_ERROR, false, 
"IsListenOnly had no value", nodeIdentifier);
+                               handler.outputHandler.queue(msg);
+                               return;
+                       }
+               }
+               handler.outputHandler.queue(new Peer(pn, true, true));
+       }
+
+}

Modified: trunk/freenet/src/freenet/node/fcp/ProtocolErrorMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ProtocolErrorMessage.java        
2006-07-02 20:57:57 UTC (rev 9434)
+++ trunk/freenet/src/freenet/node/fcp/ProtocolErrorMessage.java        
2006-07-03 01:03:12 UTC (rev 9435)
@@ -37,6 +37,7 @@
        static final int NOT_SUPPORTED = 16;
        static final int INTERNAL_ERROR = 17;
        static final int SHUTTING_DOWN = 18;
+       static final int NO_SUCH_NODE_IDENTIFIER = 19;

        final int code;
        final String extra;
@@ -81,6 +82,8 @@
                        return "Internal error";
                case SHUTTING_DOWN:
                        return "Shutting down";
+               case NO_SUCH_NODE_IDENTIFIER:
+                       return "No such nodeIdentifier";
                default:
                        Logger.error(this, "Unknown error code: "+code, new 
Exception("debug"));
                return "(Unknown)";


Reply via email to