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