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