Author: toad
Date: 2007-07-13 15:43:05 +0000 (Fri, 13 Jul 2007)
New Revision: 14072

Modified:
   trunk/freenet/src/freenet/node/Node.java
   trunk/freenet/src/freenet/node/OpennetManager.java
   trunk/freenet/src/freenet/node/OpennetPeerNode.java
   trunk/freenet/src/freenet/node/PeerManager.java
   trunk/freenet/src/freenet/node/PeerNode.java
Log:
OpennetPeerNode's need to be aware of their OpennetManager

Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java    2007-07-13 15:27:13 UTC (rev 
14071)
+++ trunk/freenet/src/freenet/node/Node.java    2007-07-13 15:43:05 UTC (rev 
14072)
@@ -766,7 +766,7 @@

                // Then read the peers
                peers = new PeerManager(this);
-               peers.tryReadPeers(new File(nodeDir, 
"peers-"+getDarknetPortNumber()).getPath(), darknetCrypto, false);
+               peers.tryReadPeers(new File(nodeDir, 
"peers-"+getDarknetPortNumber()).getPath(), darknetCrypto, null, false);
                peers.writePeers();
                peers.updatePMUserAlert();


Modified: trunk/freenet/src/freenet/node/OpennetManager.java
===================================================================
--- trunk/freenet/src/freenet/node/OpennetManager.java  2007-07-13 15:27:13 UTC 
(rev 14071)
+++ trunk/freenet/src/freenet/node/OpennetManager.java  2007-07-13 15:43:05 UTC 
(rev 14072)
@@ -16,6 +16,7 @@
 import freenet.io.comm.Peer;
 import freenet.io.comm.PeerParseException;
 import freenet.io.comm.ReferenceSignatureVerificationException;
+import freenet.support.LRUQueue;
 import freenet.support.Logger;
 import freenet.support.SimpleFieldSet;

@@ -31,6 +32,10 @@
        final Node node;
        final NodeCrypto crypto;

+       /** Our peers. PeerNode's are promoted when they successfully fetch a 
key. Normally we take
+        * the bottom peer, but if that isn't eligible to be dropped, we 
iterate up the list. */
+       private final LRUQueue peersLRU;
+       
        // FIXME make this configurable
        static final int MAX_PEERS = 30;
        /** Chance of resetting path folding (for plausible deniability) is 1 
in this number. */
@@ -58,7 +63,8 @@
                                crypto.initCrypto();
                        }
                }
-               node.peers.tryReadPeers(new File(node.nodeDir, 
"openpeers-"+crypto.portNumber).toString(), crypto, true);
+               peersLRU = new LRUQueue();
+               node.peers.tryReadPeers(new File(node.nodeDir, 
"openpeers-"+crypto.portNumber).toString(), crypto, this, true);
                writeFile(nodeFile, backupNodeFile);
        }

@@ -135,7 +141,7 @@
        }

        public boolean addNewOpennetNode(SimpleFieldSet fs) throws 
FSParseException, PeerParseException, ReferenceSignatureVerificationException {
-               OpennetPeerNode pn = new OpennetPeerNode(fs, node, crypto, 
node.peers, false, crypto.packetMangler);
+               OpennetPeerNode pn = new OpennetPeerNode(fs, node, crypto, 
this, node.peers, false, crypto.packetMangler);
                if(Arrays.equals(pn.getIdentity(), crypto.myIdentity)) {
                        Logger.error(this, "Not adding self as opennet peer");
                        return false; // Equal to myself

Modified: trunk/freenet/src/freenet/node/OpennetPeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/OpennetPeerNode.java 2007-07-13 15:27:13 UTC 
(rev 14071)
+++ trunk/freenet/src/freenet/node/OpennetPeerNode.java 2007-07-13 15:43:05 UTC 
(rev 14072)
@@ -6,8 +6,11 @@

 public class OpennetPeerNode extends PeerNode {

-       public OpennetPeerNode(SimpleFieldSet fs, Node node2, NodeCrypto 
crypto, PeerManager peers, boolean fromLocal, OutgoingPacketMangler mangler) 
throws FSParseException, PeerParseException, 
ReferenceSignatureVerificationException {
+       final OpennetManager opennet;
+       
+       public OpennetPeerNode(SimpleFieldSet fs, Node node2, NodeCrypto 
crypto, OpennetManager opennet, PeerManager peers, boolean fromLocal, 
OutgoingPacketMangler mangler) throws FSParseException, PeerParseException, 
ReferenceSignatureVerificationException {
                super(fs, node2, crypto, peers, fromLocal, mangler, true);
+               this.opennet = opennet;
        }

        public PeerNodeStatus getStatus() {

Modified: trunk/freenet/src/freenet/node/PeerManager.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerManager.java     2007-07-13 15:27:13 UTC 
(rev 14071)
+++ trunk/freenet/src/freenet/node/PeerManager.java     2007-07-13 15:43:05 UTC 
(rev 14072)
@@ -107,7 +107,7 @@
         this.node = node;
     }

-    void tryReadPeers(String filename, NodeCrypto crypto, boolean isOpennet) {
+    void tryReadPeers(String filename, NodeCrypto crypto, OpennetManager 
opennet, boolean isOpennet) {
        synchronized(writePeersSync) {
                if(isOpennet) {
                        openFilename = filename;
@@ -120,7 +120,7 @@
         File backupFile = new File(filename+".bak");
         // Try to read the node list from disk
        if(peersFile.exists()) {
-               if(readPeers(peersFile, mangler, crypto)) {
+               if(readPeers(peersFile, mangler, crypto, opennet, isOpennet)) {
                    String msg;
                    if(isOpennet) {
                            msg = "Read "+getOpennetPeers().length+" peers from 
"+peersFile;
@@ -134,7 +134,7 @@
                }
        // Try the backup
        if(backupFile.exists()) {
-               if(readPeers(backupFile, mangler, crypto)) {
+               if(readPeers(backupFile, mangler, crypto, opennet, isOpennet)) {
                    String msg;
                    if(isOpennet) {
                            msg = "Read "+getOpennetPeers().length+" peers from 
"+backupFile;
@@ -150,7 +150,7 @@
        }               
        }

-       private boolean readPeers(File peersFile, OutgoingPacketMangler 
mangler, NodeCrypto crypto) {
+       private boolean readPeers(File peersFile, OutgoingPacketMangler 
mangler, NodeCrypto crypto, OpennetManager opennet, boolean isOpennet) {
        boolean gotSome = false;
        FileInputStream fis;
                try {
@@ -173,7 +173,7 @@
                 fs = new SimpleFieldSet(br, false, true);
                 PeerNode pn;
                 try {
-                    pn = PeerNode.create(fs, node, crypto, this, true, 
mangler);
+                    pn = PeerNode.create(fs, node, crypto, opennet, this, 
true, mangler);
                 } catch (FSParseException e2) {
                     Logger.error(this, "Could not parse peer: "+e2+ '\n' 
+fs.toString(),e2);
                     continue;

Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java        2007-07-13 15:27:13 UTC 
(rev 14071)
+++ trunk/freenet/src/freenet/node/PeerNode.java        2007-07-13 15:43:05 UTC 
(rev 14072)
@@ -2665,9 +2665,9 @@
        /**
         * Create a DarknetPeerNode or an OpennetPeerNode as appropriate
         */
-       public static PeerNode create(SimpleFieldSet fs, Node node2, NodeCrypto 
crypto, PeerManager manager, boolean b, OutgoingPacketMangler mangler) throws 
FSParseException, PeerParseException, ReferenceSignatureVerificationException {
+       public static PeerNode create(SimpleFieldSet fs, Node node2, NodeCrypto 
crypto, OpennetManager opennet, PeerManager manager, boolean b, 
OutgoingPacketMangler mangler) throws FSParseException, PeerParseException, 
ReferenceSignatureVerificationException {
                if(crypto.isOpennet)
-                       return new OpennetPeerNode(fs, node2, crypto, manager, 
b, mangler);
+                       return new OpennetPeerNode(fs, node2, crypto, opennet, 
manager, b, mangler);
                else
                        return new DarknetPeerNode(fs, node2, crypto, manager, 
b, mangler);
        }


Reply via email to