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



Reply via email to