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() {