Author: toad
Date: 2008-01-08 19:15:25 +0000 (Tue, 08 Jan 2008)
New Revision: 16966

Modified:
   trunk/freenet/src/freenet/clients/http/ConnectionsToadlet.java
   trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
   trunk/freenet/src/freenet/clients/http/OpennetConnectionsToadlet.java
   trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java
   trunk/freenet/src/freenet/node/DarknetPeerNode.java
   trunk/freenet/src/freenet/node/DarknetPeerNodeStatus.java
   trunk/freenet/src/freenet/node/NodeStats.java
   trunk/freenet/src/freenet/node/OpennetPeerNode.java
   trunk/freenet/src/freenet/node/OpennetPeerNodeStatus.java
   trunk/freenet/src/freenet/node/PeerManager.java
   trunk/freenet/src/freenet/node/PeerNode.java
   trunk/freenet/src/freenet/node/PeerNodeStatus.java
   trunk/freenet/src/freenet/node/SeedClientPeerNode.java
   trunk/freenet/src/freenet/node/SeedServerPeerNode.java
Log:
PeerNodeStatus(,noHeavy) - saves a fair amount of memory churn

Modified: trunk/freenet/src/freenet/clients/http/ConnectionsToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/ConnectionsToadlet.java      
2008-01-08 16:33:38 UTC (rev 16965)
+++ trunk/freenet/src/freenet/clients/http/ConnectionsToadlet.java      
2008-01-08 19:15:25 UTC (rev 16966)
@@ -165,9 +165,10 @@

                final boolean advancedModeEnabled = 
node.isAdvancedModeEnabled();
                final boolean fProxyJavascriptEnabled = 
node.isFProxyJavascriptEnabled();
+               boolean drawMessageTypes = 
path.endsWith("displaymessagetypes.html");

                /* gather connection statistics */
-               PeerNodeStatus[] peerNodeStatuses = getPeerNodeStatuses();
+               PeerNodeStatus[] peerNodeStatuses = 
getPeerNodeStatuses(!drawMessageTypes);
                Arrays.sort(peerNodeStatuses, 
comparator(request.getParam("sortBy", null), 
request.isParameterSet("reversed")));

                int numberOfConnected = 
PeerNodeStatus.getPeerStatusCount(peerNodeStatuses, 
PeerManager.PEER_NODE_STATUS_CONNECTED);
@@ -456,7 +457,7 @@
                                for (int peerIndex = 0, peerCount = 
peerNodeStatuses.length; peerIndex < peerCount; peerIndex++) {

                                        PeerNodeStatus peerNodeStatus = 
peerNodeStatuses[peerIndex];
-                                       drawRow(peerTable, peerNodeStatus, 
advancedModeEnabled, fProxyJavascriptEnabled, now, path, enablePeerActions, 
endCols);
+                                       drawRow(peerTable, peerNodeStatus, 
advancedModeEnabled, fProxyJavascriptEnabled, now, path, enablePeerActions, 
endCols, drawMessageTypes);

                                }

@@ -723,11 +724,11 @@
                return new ComparatorByStatus(sortBy, reversed);
        }

-       abstract protected PeerNodeStatus[] getPeerNodeStatuses();
+       abstract protected PeerNodeStatus[] getPeerNodeStatuses(boolean 
noHeavy);

        abstract protected SimpleFieldSet getNoderef();

-       private void drawRow(HTMLNode peerTable, PeerNodeStatus peerNodeStatus, 
boolean advancedModeEnabled, boolean fProxyJavascriptEnabled, long now, String 
path, boolean enablePeerActions, SimpleColumn[] endCols) {
+       private void drawRow(HTMLNode peerTable, PeerNodeStatus peerNodeStatus, 
boolean advancedModeEnabled, boolean fProxyJavascriptEnabled, long now, String 
path, boolean enablePeerActions, SimpleColumn[] endCols, boolean 
drawMessageTypes) {
                HTMLNode peerRow = peerTable.addChild("tr");

                if(enablePeerActions) {
@@ -755,9 +756,9 @@

                // version column
                if (peerNodeStatus.getStatusValue() != 
PeerManager.PEER_NODE_STATUS_NEVER_CONNECTED && 
(peerNodeStatus.isPublicInvalidVersion() || 
peerNodeStatus.isPublicReverseInvalidVersion())) {  // Don't draw attention to 
a version problem if NEVER CONNECTED
-                       peerRow.addChild("td", "class", 
"peer-version").addChild("span", "class", "peer_version_problem", 
peerNodeStatus.getSimpleVersion());
+                       peerRow.addChild("td", "class", 
"peer-version").addChild("span", "class", "peer_version_problem", 
Integer.toString(peerNodeStatus.getSimpleVersion()));
                } else {
-                       peerRow.addChild("td", "class", 
"peer-version").addChild("#", peerNodeStatus.getSimpleVersion());
+                       peerRow.addChild("td", "class", 
"peer-version").addChild("#", 
Integer.toString(peerNodeStatus.getSimpleVersion()));
                }

                // location column
@@ -822,7 +823,7 @@
                        }
                }

-               if (path.endsWith("displaymessagetypes.html")) {
+               if (drawMessageTypes) {
                        drawMessageTypes(peerTable, peerNodeStatus);
                }
        }

Modified: trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java       
2008-01-08 16:33:38 UTC (rev 16965)
+++ trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java       
2008-01-08 19:15:25 UTC (rev 16966)
@@ -86,8 +86,8 @@
                return node.exportDarknetPublicFieldSet();
        }

-       protected PeerNodeStatus[] getPeerNodeStatuses() {
-               return node.peers.getDarknetPeerNodeStatuses();
+       protected PeerNodeStatus[] getPeerNodeStatuses(boolean noHeavy) {
+               return node.peers.getDarknetPeerNodeStatuses(noHeavy);
        }

        protected String getPageTitle(String titleCountString, String myName) {

Modified: trunk/freenet/src/freenet/clients/http/OpennetConnectionsToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/OpennetConnectionsToadlet.java       
2008-01-08 16:33:38 UTC (rev 16965)
+++ trunk/freenet/src/freenet/clients/http/OpennetConnectionsToadlet.java       
2008-01-08 19:15:25 UTC (rev 16966)
@@ -40,8 +40,8 @@
                return node.exportOpennetPublicFieldSet();
        }

-       protected PeerNodeStatus[] getPeerNodeStatuses() {
-               return node.peers.getOpennetPeerNodeStatuses();
+       protected PeerNodeStatus[] getPeerNodeStatuses(boolean noHeavy) {
+               return node.peers.getOpennetPeerNodeStatuses(noHeavy);
        }

        public boolean isEnabled() {

Modified: trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java       
2008-01-08 16:33:38 UTC (rev 16965)
+++ trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java       
2008-01-08 19:15:25 UTC (rev 16966)
@@ -131,7 +131,7 @@
                final SubConfig nodeConfig = node.config.get("node");

                /* gather connection statistics */
-               PeerNodeStatus[] peerNodeStatuses = peers.getPeerNodeStatuses();
+               PeerNodeStatus[] peerNodeStatuses = 
peers.getPeerNodeStatuses(true);
                Arrays.sort(peerNodeStatuses, new Comparator() {
                        public int compare(Object first, Object second) {
                                PeerNodeStatus firstNode = (PeerNodeStatus) 
first;
@@ -307,7 +307,7 @@
                        HTMLNode peerCircleInfobox = 
nextTableCell.addChild("div", "class", "infobox");
                        peerCircleInfobox.addChild("div", "class", 
"infobox-header", "Peer\u00a0Location\u00a0Distribution (w/pReject)");
                        HTMLNode peerCircleTable = 
peerCircleInfobox.addChild("div", "class", "infobox-content").addChild("table");
-                       addPeerCircle(peerCircleTable);
+                       addPeerCircle(peerCircleTable, peerNodeStatuses);
                        nextTableCell = overviewTableRow.addChild("td");

                        // node distribution box
@@ -981,7 +981,7 @@
                }
        }

-       private void addPeerCircle (HTMLNode circleTable) {
+       private void addPeerCircle (HTMLNode circleTable, PeerNodeStatus[] 
peerNodeStatuses) {
                int[] histogramConnected = new int[HISTOGRAM_LENGTH];
                int[] histogramDisconnected = new int[HISTOGRAM_LENGTH];
                for (int i = 0; i < HISTOGRAM_LENGTH; i++) {
@@ -1005,7 +1005,6 @@
                peerCircleInfoboxContent.addChild("span", new String[] { 
"style", "class" }, new String[] { "position: absolute; top: " + 
PEER_CIRCLE_RADIUS + "px; left: " + (PEER_CIRCLE_RADIUS + 
PEER_CIRCLE_ADDITIONAL_FREE_SPACE) + "px", "mark" }, "+");
                //
                double myLocation = node.getLocation();
-               PeerNodeStatus[] peerNodeStatuses = peers.getPeerNodeStatuses();
                PeerNodeStatus peerNodeStatus;
                double peerLocation;
                double peerDistance;

Modified: trunk/freenet/src/freenet/node/DarknetPeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/DarknetPeerNode.java 2008-01-08 16:33:38 UTC 
(rev 16965)
+++ trunk/freenet/src/freenet/node/DarknetPeerNode.java 2008-01-08 19:15:25 UTC 
(rev 16966)
@@ -1497,8 +1497,8 @@
                return ""+getPeer()+" : "+getName();
        }

-       public PeerNodeStatus getStatus() {
-               return new DarknetPeerNodeStatus(this);
+       public PeerNodeStatus getStatus(boolean noHeavy) {
+               return new DarknetPeerNodeStatus(this, noHeavy);
        }

        public boolean isOpennet() {

Modified: trunk/freenet/src/freenet/node/DarknetPeerNodeStatus.java
===================================================================
--- trunk/freenet/src/freenet/node/DarknetPeerNodeStatus.java   2008-01-08 
16:33:38 UTC (rev 16965)
+++ trunk/freenet/src/freenet/node/DarknetPeerNodeStatus.java   2008-01-08 
19:15:25 UTC (rev 16966)
@@ -12,8 +12,8 @@

        private final String privateDarknetCommentNote;

-       public DarknetPeerNodeStatus(DarknetPeerNode peerNode) {
-               super(peerNode);
+       public DarknetPeerNodeStatus(DarknetPeerNode peerNode, boolean noHeavy) 
{
+               super(peerNode, noHeavy);
                this.name = peerNode.getName();
                this.burstOnly = peerNode.isBurstOnly();
                this.listening = peerNode.isListenOnly();

Modified: trunk/freenet/src/freenet/node/NodeStats.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeStats.java       2008-01-08 16:33:38 UTC 
(rev 16965)
+++ trunk/freenet/src/freenet/node/NodeStats.java       2008-01-08 19:15:25 UTC 
(rev 16966)
@@ -783,7 +783,7 @@
                fs.put("unclaimedFIFOSize", node.usm.getUnclaimedFIFOSize());

                /* gather connection statistics */
-               DarknetPeerNodeStatus[] peerNodeStatuses = 
peers.getDarknetPeerNodeStatuses();
+               DarknetPeerNodeStatus[] peerNodeStatuses = 
peers.getDarknetPeerNodeStatuses(true);
                Arrays.sort(peerNodeStatuses, new Comparator() {
                        public int compare(Object first, Object second) {
                                DarknetPeerNodeStatus firstNode = 
(DarknetPeerNodeStatus) first;

Modified: trunk/freenet/src/freenet/node/OpennetPeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/OpennetPeerNode.java 2008-01-08 16:33:38 UTC 
(rev 16965)
+++ trunk/freenet/src/freenet/node/OpennetPeerNode.java 2008-01-08 19:15:25 UTC 
(rev 16966)
@@ -14,8 +14,8 @@
                this.opennet = opennet;
        }

-       public PeerNodeStatus getStatus() {
-               return new OpennetPeerNodeStatus(this);
+       public PeerNodeStatus getStatus(boolean noHeavy) {
+               return new OpennetPeerNodeStatus(this, noHeavy);
        }

        public boolean isRoutingCompatible() {

Modified: trunk/freenet/src/freenet/node/OpennetPeerNodeStatus.java
===================================================================
--- trunk/freenet/src/freenet/node/OpennetPeerNodeStatus.java   2008-01-08 
16:33:38 UTC (rev 16965)
+++ trunk/freenet/src/freenet/node/OpennetPeerNodeStatus.java   2008-01-08 
19:15:25 UTC (rev 16966)
@@ -2,8 +2,8 @@

 public class OpennetPeerNodeStatus extends PeerNodeStatus {

-       OpennetPeerNodeStatus(PeerNode peerNode) {
-               super(peerNode);
+       OpennetPeerNodeStatus(PeerNode peerNode, boolean noHeavy) {
+               super(peerNode, noHeavy);
                timeLastSuccess = ((OpennetPeerNode)peerNode).timeLastSuccess();
        }


Modified: trunk/freenet/src/freenet/node/PeerManager.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerManager.java     2008-01-08 16:33:38 UTC 
(rev 16965)
+++ trunk/freenet/src/freenet/node/PeerManager.java     2008-01-08 19:15:25 UTC 
(rev 16966)
@@ -787,7 +787,7 @@
         String[] status = new String[peers.length];
         for(int i=0;i<peers.length;i++) {
             PeerNode pn = peers[i];
-            status[i] = pn.getStatus().toString();
+            status[i] = pn.getStatus(true).toString();
            Version.seenVersion(pn.getVersion());
         }
         Arrays.sort(status);
@@ -1060,7 +1060,7 @@
                int numberOfDisconnecting = 0;
                int numberOfRoutingDisabled = 0;

-               PeerNodeStatus[] pns = getPeerNodeStatuses();
+               PeerNodeStatus[] pns = getPeerNodeStatuses(true);

                for(int i=0; i<pns.length; i++){
                        switch (pns[i].getStatusValue()) {
@@ -1272,32 +1272,32 @@
                }
        }

-       public PeerNodeStatus[] getPeerNodeStatuses() {
+       public PeerNodeStatus[] getPeerNodeStatuses(boolean noHeavy) {
         PeerNode[] peers;
         synchronized (this) {
                        peers = myPeers;
                }
                PeerNodeStatus[] _peerNodeStatuses = new 
PeerNodeStatus[peers.length];
                for (int peerIndex = 0, peerCount = peers.length; peerIndex < 
peerCount; peerIndex++) {
-                       _peerNodeStatuses[peerIndex] = 
peers[peerIndex].getStatus();
+                       _peerNodeStatuses[peerIndex] = 
peers[peerIndex].getStatus(noHeavy);
                }
                return _peerNodeStatuses;
        }

-       public DarknetPeerNodeStatus[] getDarknetPeerNodeStatuses() {
+       public DarknetPeerNodeStatus[] getDarknetPeerNodeStatuses(boolean 
noHeavy) {
         DarknetPeerNode[] peers = getDarknetPeers();
                DarknetPeerNodeStatus[] _peerNodeStatuses = new 
DarknetPeerNodeStatus[peers.length];
                for (int peerIndex = 0, peerCount = peers.length; peerIndex < 
peerCount; peerIndex++) {
-                       _peerNodeStatuses[peerIndex] = (DarknetPeerNodeStatus) 
peers[peerIndex].getStatus();
+                       _peerNodeStatuses[peerIndex] = (DarknetPeerNodeStatus) 
peers[peerIndex].getStatus(noHeavy);
                }
                return _peerNodeStatuses;
        }

-       public OpennetPeerNodeStatus[] getOpennetPeerNodeStatuses() {
+       public OpennetPeerNodeStatus[] getOpennetPeerNodeStatuses(boolean 
noHeavy) {
         OpennetPeerNode[] peers = getOpennetPeers();
                OpennetPeerNodeStatus[] _peerNodeStatuses = new 
OpennetPeerNodeStatus[peers.length];
                for (int peerIndex = 0, peerCount = peers.length; peerIndex < 
peerCount; peerIndex++) {
-                       _peerNodeStatuses[peerIndex] = (OpennetPeerNodeStatus) 
peers[peerIndex].getStatus();
+                       _peerNodeStatuses[peerIndex] = (OpennetPeerNodeStatus) 
peers[peerIndex].getStatus(noHeavy);
                }
                return _peerNodeStatuses;
        }

Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java        2008-01-08 16:33:38 UTC 
(rev 16965)
+++ trunk/freenet/src/freenet/node/PeerNode.java        2008-01-08 19:15:25 UTC 
(rev 16966)
@@ -338,6 +338,7 @@
                this.backedOffPercent = new TimeDecayingRunningAverage(0.0, 
180000, 0.0, 1.0, node);
                version = fs.get("version");
                Version.seenVersion(version);
+               simpleVersion = Version.getArbitraryBuildNumber(version);
                String locationString = fs.get("location");
                try {
                        currentLocation = Location.getLocation(locationString);
@@ -2087,6 +2088,7 @@
                        if(!newVersion.equals(version))
                                changedAnything = true;
                        version = newVersion;
+                       simpleVersion = 
Version.getArbitraryBuildNumber(version);
                        Version.seenVersion(newVersion);
                }
                String newLastGoodVersion = fs.get("lastGoodVersion");
@@ -2241,7 +2243,11 @@
                }
        }

-       public abstract PeerNodeStatus getStatus();
+       /**
+        * Get a PeerNodeStatus for this node.
+        * @param noHeavy If true, avoid any expensive operations e.g. the 
message count hashtables.
+        */
+       public abstract PeerNodeStatus getStatus(boolean noHeavy);

        public String getTMCIPeerInfo() {
                long now = System.currentTimeMillis();
@@ -2255,7 +2261,7 @@
        }

        public String getFreevizOutput() {
-               return getStatus().toString() + '|' + Base64.encode(identity);
+               return getStatus(true).toString() + '|' + 
Base64.encode(identity);
        }

        public synchronized String getVersion() {
@@ -2266,8 +2272,10 @@
                return lastGoodVersion;
        }

-       public String getSimpleVersion() {
-               return 
String.valueOf(Version.getArbitraryBuildNumber(getVersion()));
+       private int simpleVersion;
+       
+       public int getSimpleVersion() {
+               return simpleVersion;
        }

        /**

Modified: trunk/freenet/src/freenet/node/PeerNodeStatus.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNodeStatus.java  2008-01-08 16:33:38 UTC 
(rev 16965)
+++ trunk/freenet/src/freenet/node/PeerNodeStatus.java  2008-01-08 19:15:25 UTC 
(rev 16966)
@@ -32,7 +32,7 @@

        private final String version;

-       private final String simpleVersion;
+       private final int simpleVersion;

        private final int routingBackoffLength;

@@ -88,7 +88,7 @@

        private final boolean isSearchable;

-       PeerNodeStatus(PeerNode peerNode) {
+       PeerNodeStatus(PeerNode peerNode, boolean noHeavy) {
                Peer p = peerNode.getPeer();
                if(p == null) {
                        peerAddress = null;
@@ -117,8 +117,13 @@
                this.timeLastRoutable = peerNode.timeLastRoutable();
                this.timeLastConnectionCompleted = 
peerNode.timeLastConnectionCompleted();
                this.peerAddedTime = peerNode.getPeerAddedTime();
-               this.localMessagesReceived = 
peerNode.getLocalNodeReceivedMessagesFromStatistic();
-               this.localMessagesSent = 
peerNode.getLocalNodeSentMessagesToStatistic();
+               if(!noHeavy) {
+                       this.localMessagesReceived = 
peerNode.getLocalNodeReceivedMessagesFromStatistic();
+                       this.localMessagesSent = 
peerNode.getLocalNodeSentMessagesToStatistic();
+               } else {
+                       this.localMessagesReceived = null;
+                       this.localMessagesSent = null;
+               }
                this.hashCode = peerNode.hashCode;
                this.pReject = peerNode.getPRejected();
                this.totalBytesIn = peerNode.getTotalInputBytes();
@@ -313,7 +318,7 @@
        /**
         * @return the simpleVersion
         */
-       public String getSimpleVersion() {
+       public int getSimpleVersion() {
                return simpleVersion;
        }


Modified: trunk/freenet/src/freenet/node/SeedClientPeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/SeedClientPeerNode.java      2008-01-08 
16:33:38 UTC (rev 16965)
+++ trunk/freenet/src/freenet/node/SeedClientPeerNode.java      2008-01-08 
19:15:25 UTC (rev 16966)
@@ -17,8 +17,8 @@
                super(fs, node2, crypto, peers, fromLocal, noSig, mangler, 
true);
        }

-       public PeerNodeStatus getStatus() {
-               return new PeerNodeStatus(this);
+       public PeerNodeStatus getStatus(boolean noHeavy) {
+               return new PeerNodeStatus(this, noHeavy);
        }

        public boolean isOpennet() {

Modified: trunk/freenet/src/freenet/node/SeedServerPeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/SeedServerPeerNode.java      2008-01-08 
16:33:38 UTC (rev 16965)
+++ trunk/freenet/src/freenet/node/SeedServerPeerNode.java      2008-01-08 
19:15:25 UTC (rev 16966)
@@ -22,8 +22,8 @@
                super(fs, node2, crypto, peers, fromLocal, false, mangler, 
true);
        }

-       public PeerNodeStatus getStatus() {
-               return new PeerNodeStatus(this);
+       public PeerNodeStatus getStatus(boolean noHeavy) {
+               return new PeerNodeStatus(this, noHeavy);
        }

        public boolean isOpennet() {


Reply via email to