Author: toad
Date: 2007-11-27 17:55:14 +0000 (Tue, 27 Nov 2007)
New Revision: 15976
Modified:
trunk/freenet/src/freenet/io/AddressTracker.java
trunk/freenet/src/freenet/io/AddressTrackerItem.java
trunk/freenet/src/freenet/io/InetAddressAddressTrackerItem.java
trunk/freenet/src/freenet/io/PeerAddressTrackerItem.java
Log:
address -> Address (more consistency)
Beginnings of serialise-from-disk support for AddressTracker.
Modified: trunk/freenet/src/freenet/io/AddressTracker.java
===================================================================
--- trunk/freenet/src/freenet/io/AddressTracker.java 2007-11-27 17:21:44 UTC
(rev 15975)
+++ trunk/freenet/src/freenet/io/AddressTracker.java 2007-11-27 17:55:14 UTC
(rev 15976)
@@ -23,8 +23,10 @@
import java.io.OutputStreamWriter;
import java.net.InetAddress;
import java.util.HashMap;
+import java.util.Iterator;
import freenet.io.comm.Peer;
+import freenet.node.FSParseException;
import freenet.support.Logger;
import freenet.support.SimpleFieldSet;
@@ -56,6 +58,32 @@
ipTrackers = new HashMap();
}
+ public AddressTracker(SimpleFieldSet fs, long lastBootID) throws
FSParseException {
+ int version = fs.getInt("Version");
+ if(version != 1)
+ throw new FSParseException("Unknown Version "+version);
+ long savedBootID = fs.getLong("BootID");
+ if(savedBootID != lastBootID) throw new FSParseException("Wrong
boot ID - maybe unclean shutdown?");
+ timeDefinitelyNoPacketsReceived =
fs.getLong("TimeDefinitelyNoPacketsReceived");
+ timeDefinitelyNoPacketsSent =
fs.getLong("TimeDefinitelyNoPacketsSent");
+ peerTrackers = new HashMap();
+ SimpleFieldSet peers = fs.getSubset("Peers");
+ Iterator i = peers.directSubsetNameIterator();
+ while(i.hasNext()) {
+ SimpleFieldSet peer = peers.subset((String)i.next());
+ PeerAddressTrackerItem item = new
PeerAddressTrackerItem(peer);
+ peerTrackers.put(item.peer, item);
+ }
+ ipTrackers = new HashMap();
+ SimpleFieldSet ips = fs.getSubset("IPs");
+ i = peers.directSubsetNameIterator();
+ while(i.hasNext()) {
+ SimpleFieldSet peer = ips.subset((String)i.next());
+ InetAddressAddressTrackerItem item = new
InetAddressAddressTrackerItem(peer);
+ ipTrackers.put(item.addr, item);
+ }
+ }
+
public void sentPacketTo(Peer peer) {
packetTo(peer, true);
}
Modified: trunk/freenet/src/freenet/io/AddressTrackerItem.java
===================================================================
--- trunk/freenet/src/freenet/io/AddressTrackerItem.java 2007-11-27
17:21:44 UTC (rev 15975)
+++ trunk/freenet/src/freenet/io/AddressTrackerItem.java 2007-11-27
17:55:14 UTC (rev 15976)
@@ -15,6 +15,8 @@
*/
package freenet.io;
+import freenet.node.FSParseException;
+import freenet.support.Logger;
import freenet.support.SimpleFieldSet;
/**
@@ -63,6 +65,27 @@
gapLengthRecvTimes = new long[TRACK_GAPS];
}
+ public AddressTrackerItem(SimpleFieldSet fs) throws FSParseException {
+ timeFirstReceivedPacket = fs.getLong("TimeFirstReceivedPacket");
+ timeFirstSentPacket = fs.getLong("TimeFirstSentPacket");
+ timeDefinitelyNoPacketsSent =
fs.getLong("TimeDefinitelyNoPacketsSent");
+ timeDefinitelyNoPacketsReceived =
fs.getLong("TimeDefinitelyNoPacketsReceived");
+ timeLastReceivedPacket = fs.getLong("TimeLastReceivedPacket");
+ timeLastSentPacket = fs.getLong("TimeLastSentPacket");
+ packetsSent = fs.getLong("PacketsSent");
+ packetsReceived = fs.getLong("PacketsReceived");
+ SimpleFieldSet gaps = fs.getSubset("Gaps");
+ for(int i=0;i<TRACK_GAPS;i++) {
+ SimpleFieldSet gap = gaps.subset(Integer.toString(i));
+ if(gap == null) {
+ Logger.normal(this, "No more gaps at i="+i+" -
TRACK_GAPS changed??");
+ break;
+ }
+ gapLengths[i] = gap.getLong("Length");
+ gapLengthRecvTimes[i] = gap.getLong("Received");
+ }
+ }
+
public synchronized void sentPacket(long now) {
packetsSent++;
if(timeFirstSentPacket < 0)
Modified: trunk/freenet/src/freenet/io/InetAddressAddressTrackerItem.java
===================================================================
--- trunk/freenet/src/freenet/io/InetAddressAddressTrackerItem.java
2007-11-27 17:21:44 UTC (rev 15975)
+++ trunk/freenet/src/freenet/io/InetAddressAddressTrackerItem.java
2007-11-27 17:55:14 UTC (rev 15976)
@@ -16,7 +16,9 @@
package freenet.io;
import java.net.InetAddress;
+import java.net.UnknownHostException;
+import freenet.node.FSParseException;
import freenet.support.SimpleFieldSet;
public class InetAddressAddressTrackerItem extends AddressTrackerItem {
@@ -31,7 +33,19 @@
public SimpleFieldSet toFieldSet() {
SimpleFieldSet fs = super.toFieldSet();
- fs.putOverwrite("address", addr.getHostAddress());
+ fs.putOverwrite("Address", addr.getHostAddress());
return fs;
}
+
+ public InetAddressAddressTrackerItem(SimpleFieldSet fs) throws
FSParseException {
+ super(fs);
+ try {
+ addr = InetAddress.getByName(fs.getString("Address"));
+ } catch (UnknownHostException e) {
+ FSParseException ex = new FSParseException("Unknown
domain name in Address: "+e);
+ ex.initCause(e);
+ throw ex;
+ }
+ }
+
}
Modified: trunk/freenet/src/freenet/io/PeerAddressTrackerItem.java
===================================================================
--- trunk/freenet/src/freenet/io/PeerAddressTrackerItem.java 2007-11-27
17:21:44 UTC (rev 15975)
+++ trunk/freenet/src/freenet/io/PeerAddressTrackerItem.java 2007-11-27
17:55:14 UTC (rev 15976)
@@ -15,7 +15,11 @@
*/
package freenet.io;
+import java.net.UnknownHostException;
+
import freenet.io.comm.Peer;
+import freenet.io.comm.PeerParseException;
+import freenet.node.FSParseException;
import freenet.support.SimpleFieldSet;
public class PeerAddressTrackerItem extends AddressTrackerItem {
@@ -28,9 +32,22 @@
this.peer = peer;
}
+ public PeerAddressTrackerItem(SimpleFieldSet fs) throws
FSParseException {
+ super(fs);
+ try {
+ peer = new Peer(fs.getString("Address"), false);
+ } catch (UnknownHostException e) {
+ FSParseException ex = new FSParseException("Unknown
domain name in Address: "+e);
+ ex.initCause(e);
+ throw ex;
+ } catch (PeerParseException e) {
+ throw new FSParseException(e);
+ }
+ }
+
public SimpleFieldSet toFieldSet() {
SimpleFieldSet fs = super.toFieldSet();
- fs.putOverwrite("address", peer.toStringPrefNumeric());
+ fs.putOverwrite("Address", peer.toStringPrefNumeric());
return fs;
}