Author: zothar
Date: 2006-06-25 19:51:15 +0000 (Sun, 25 Jun 2006)
New Revision: 9386

Added:
   trunk/freenet/src/freenet/node/fcp/EndListPeersMessage.java
   trunk/freenet/src/freenet/node/fcp/ListPeersMessage.java
   trunk/freenet/src/freenet/node/fcp/Peer.java
Modified:
   trunk/freenet/src/freenet/node/Node.java
   trunk/freenet/src/freenet/node/Version.java
   trunk/freenet/src/freenet/node/fcp/FCPMessage.java
Log:
841: Add support for ListPeers client-to-node FCP message.

Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java    2006-06-25 05:49:58 UTC (rev 
9385)
+++ trunk/freenet/src/freenet/node/Node.java    2006-06-25 19:51:15 UTC (rev 
9386)
@@ -3311,4 +3311,8 @@
                        nextPeerManagerUserAlertStatsUpdateTime = now + 
peerManagerUserAlertStatsUpdateInterval;
                }
        }
+       public PeerNode[] getPeerNodes() {
+               PeerManager pm = peers;
+               return pm.myPeers;
+       }
 }

Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-06-25 05:49:58 UTC (rev 
9385)
+++ trunk/freenet/src/freenet/node/Version.java 2006-06-25 19:51:15 UTC (rev 
9386)
@@ -18,7 +18,7 @@
        public static final String protocolVersion = "1.0";

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

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

Added: trunk/freenet/src/freenet/node/fcp/EndListPeersMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/EndListPeersMessage.java 2006-06-25 
05:49:58 UTC (rev 9385)
+++ trunk/freenet/src/freenet/node/fcp/EndListPeersMessage.java 2006-06-25 
19:51:15 UTC (rev 9386)
@@ -0,0 +1,23 @@
+package freenet.node.fcp;
+
+import freenet.node.Node;
+import freenet.support.SimpleFieldSet;
+
+public class EndListPeersMessage extends FCPMessage {
+
+       static final String name = "EndListPeers";
+       
+       public SimpleFieldSet getFieldSet() {
+               return new SimpleFieldSet(true);
+       }
+
+       public String getName() {
+               return name;
+       }
+
+       public void run(FCPConnectionHandler handler, Node node)
+                       throws MessageInvalidException {
+               throw new 
MessageInvalidException(ProtocolErrorMessage.INVALID_MESSAGE, "EndListPeers 
goes from server to client not the other way around", null);
+       }
+
+}

Modified: trunk/freenet/src/freenet/node/fcp/FCPMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/FCPMessage.java  2006-06-25 05:49:58 UTC 
(rev 9385)
+++ trunk/freenet/src/freenet/node/fcp/FCPMessage.java  2006-06-25 19:51:15 UTC 
(rev 9386)
@@ -38,6 +38,8 @@
                        return new ClientPutMessage(fs);
                if(name.equals(GenerateSSKMessage.name))
                        return new GenerateSSKMessage(fs);
+               if(name.equals(ListPeersMessage.name))
+                       return new ListPeersMessage(fs);
                if(name.equals(ListPersistentRequestsMessage.name))
                        return new ListPersistentRequestsMessage(fs);
                if(name.equals(RemovePersistentRequest.name))

Added: trunk/freenet/src/freenet/node/fcp/ListPeersMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ListPeersMessage.java    2006-06-25 
05:49:58 UTC (rev 9385)
+++ trunk/freenet/src/freenet/node/fcp/ListPeersMessage.java    2006-06-25 
19:51:15 UTC (rev 9386)
@@ -0,0 +1,35 @@
+package freenet.node.fcp;
+
+import freenet.node.Node;
+import freenet.node.PeerNode;
+import freenet.support.Fields;
+import freenet.support.SimpleFieldSet;
+
+public class ListPeersMessage extends FCPMessage {
+
+       final boolean withMetadata;
+       static final String name = "ListPeers";
+       
+       public ListPeersMessage(SimpleFieldSet fs) {
+               withMetadata = Fields.stringToBool(fs.get("WithMetadata"), 
false);
+       }
+       
+       public SimpleFieldSet getFieldSet() {
+               return new SimpleFieldSet(false);
+       }
+       
+       public String getName() {
+               return name;
+       }
+       
+       public void run(FCPConnectionHandler handler, Node node)
+                       throws MessageInvalidException {
+               PeerNode[] nodes = node.getPeerNodes();
+               for(int i = 0; i < nodes.length; i++) {
+                       PeerNode pn = nodes[i];
+                       handler.outputHandler.queue(new Peer(pn, withMetadata));
+               }
+               handler.outputHandler.queue(new EndListPeersMessage());
+       }
+       
+}

Added: trunk/freenet/src/freenet/node/fcp/Peer.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/Peer.java        2006-06-25 05:49:58 UTC 
(rev 9385)
+++ trunk/freenet/src/freenet/node/fcp/Peer.java        2006-06-25 19:51:15 UTC 
(rev 9386)
@@ -0,0 +1,42 @@
+package freenet.node.fcp;
+
+import java.io.File;
+
+import freenet.keys.FreenetURI;
+import freenet.node.Node;
+import freenet.node.PeerNode;
+import freenet.support.SimpleFieldSet;
+
+public class Peer extends FCPMessage {
+
+       static final String name = "Peer";
+       
+       final PeerNode pn;
+       final boolean withMetadata;
+       
+       public Peer(PeerNode pn, boolean withMetadata) {
+               this.pn = pn;
+               this.withMetadata = withMetadata;
+       }
+
+       public SimpleFieldSet getFieldSet() {
+               SimpleFieldSet fs = pn.exportFieldSet();
+               if(withMetadata) {
+                       SimpleFieldSet meta = pn.exportMetadataFieldSet();
+                       if(!meta.isEmpty()) {
+                               fs.put("metadata", meta);
+                       }
+               }
+               return fs;
+       }
+
+       public String getName() {
+               return name;
+       }
+
+       public void run(FCPConnectionHandler handler, Node node)
+                       throws MessageInvalidException {
+               throw new 
MessageInvalidException(ProtocolErrorMessage.INVALID_MESSAGE, "Peer goes from 
server to client not the other way around", null);
+       }
+
+}


Reply via email to