Update of /cvsroot/freenet/freenet/src/freenet
In directory sc8-pr-cvs1:/tmp/cvs-serv16134/src/freenet
Modified Files:
PeerHandler.java OpenConnectionManager.java
Log Message:
Display messages sent and received by type on the secondmost and most detailed OCM
PeerHandler HTML page.
Index: PeerHandler.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/PeerHandler.java,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -w -r1.39 -r1.40
--- PeerHandler.java 30 Oct 2003 01:34:01 -0000 1.39
+++ PeerHandler.java 4 Nov 2003 15:16:43 -0000 1.40
@@ -1,10 +1,13 @@
/* -*- Mode: java; c-basic-indent: 4; tab-width: 4 -*- */
package freenet;
import java.io.IOException;
+import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.LinkedList;
+import com.sun.rsasign.v;
+
import freenet.node.Node;
import freenet.node.NodeReference;
import freenet.session.Link;
@@ -38,13 +41,26 @@
private static class messageTypeAndStatus
{
public static String toString(Message msg,boolean success){
- return msg.getMessageName()+String.valueOf(success);
+ return
msg.getMessageName()+":"+String.valueOf(success);
}
}
private static class myInt{ int intValue= 0;} //Stupid support
class for mapping to an int
protected void registerMessageSent(PeerPacketMessage m, boolean
success) {
- String key = messageTypeAndStatus.toString(m.msg, success);
+ registerMessageSent(m.msg,m.getLength(),success);
+ }
+
+ private void registerMessageSent(Message m,int size, boolean success) {
+ registerMessageSent(messageTypeAndStatus.toString(m, success));
+ if (success) { //Update the message count cache
+ messagesSent++;
+ dataSent += size; //Should we count failed data too?
+ } else {
+ messagesSendsFailed++;
+ }
+ }
+
+ private void registerMessageSent(String key) {
synchronized (messagesSentByTypeAndStatus) {
myInt count = (myInt)
messagesSentByTypeAndStatus.get(key);
if (count == null) {
@@ -53,15 +69,14 @@
}
count.intValue++;
}
- if (success) { //Update the message count cache
- messagesSent++;
- dataSent += m.getLength(); //Should we count failed
data too?
- } else {
- messagesSendsFailed++;
- }
}
protected void registerMessageReceived(Message m) {
- String key = messageTypeAndStatus.toString(m, true); //Keep
this worthless boolean to let the user worry about ONE type of HashMap key instead of
two
+ registerMessageReceived(m,true); //Keep this worthless boolean
to let the user worry about ONE type of HashMap key instead of two
+ }
+ private void registerMessageReceived(Message m,boolean success) {
+ registerMessageReceived(messageTypeAndStatus.toString(m,
success));
+ }
+ private void registerMessageReceived(String key) {
synchronized (messagesReceivedByTypeAndStatus) {
myInt count = (myInt)
messagesReceivedByTypeAndStatus.get(key);
if (count == null) {
@@ -98,6 +113,93 @@
public long getDataReceived(){
return dataReceived;
}
+ public void add(MessageAccounter other){
+ dataReceived += other.dataReceived;
+ dataSent += other.dataSent;
+ messagesReceived += other.messagesReceived;
+ messagesSent += other.messagesSent;
+ synchronized (messagesReceivedByTypeAndStatus) {
+ synchronized (other.messagesReceivedByTypeAndStatus) {
+ Enumeration e =
other.messagesReceivedByTypeAndStatus.keys();
+ while(e.hasMoreElements()){
+ String key = (String)e.nextElement();
+ registerMessageReceived(key);
+ }
+ }
+ }
+ synchronized (messagesSentByTypeAndStatus) {
+ synchronized (other.messagesSentByTypeAndStatus) {
+ Enumeration e =
other.messagesSentByTypeAndStatus.keys();
+ while(e.hasMoreElements()){
+ String key = (String)e.nextElement();
+ registerMessageReceived(key);
+ }
+ }
+ }
+
+ }
+ static class v{
+ String messageType;
+ int sent=0;
+ int received=0;
+ }
+ public String toHTML(){
+ String retval = "<TABLE BORDER = 1 BORDERCOLOR = #91A7DE
cellspacing = 0 cellpadding=0><TR><TD>";
+ retval += "<TABLE border=0 cellspacing = 0>";
+ Hashtable h = new Hashtable();
+
+ synchronized (messagesSentByTypeAndStatus) {
+ Enumeration eSent = messagesSentByTypeAndStatus.keys();
+ while (eSent.hasMoreElements()) {
+ String key = (String) eSent.nextElement();
+ String messageType = key.substring(0,
key.indexOf(":"));
+ String messageStatus =
key.substring(key.indexOf(":")+1, key.length());
+ if
(messageStatus.equalsIgnoreCase(String.valueOf(true))) {
+ int sentCount = ((myInt)
messagesSentByTypeAndStatus.get(key)).intValue;
+ v val = (v) h.get(messageType);
+ if (val == null){
+ val = new v();
+ val.messageType = messageType;
+ h.put(val.messageType, val);
+ }
+ val.sent += sentCount;
+ h.put(messageType, val); //dont care
about performance;
+ } //What to do else
+ }
+ }
+ synchronized (messagesReceivedByTypeAndStatus) {
+ Enumeration eSent =
messagesReceivedByTypeAndStatus.keys();
+ while (eSent.hasMoreElements()) {
+ String key = (String) eSent.nextElement();
+ String messageType = key.substring(0,
key.indexOf(":"));
+ String messageStatus =
key.substring(key.indexOf(":")+1, key.length());
+ if
(messageStatus.equalsIgnoreCase(String.valueOf(true))) {
+ int receivedCount = ((myInt)
messagesReceivedByTypeAndStatus.get(key)).intValue;
+ v val = (v) h.get(messageType);
+ if (val == null){
+ val = new v();
+ val.messageType = messageType;
+ h.put(val.messageType, val);
+ }
+ val.received += receivedCount;
+
+ } //What to do else
+ }
+ }
+ if (h.size() > 0) {
+ retval += "<TR BGCOLOR = #E7EDFE><TD><font size =
2>Type</FONT></TD><TD><font size = 2>Sent/Received</FONT></TD></TD>";
+ Enumeration e = h.keys();
+ while (e.hasMoreElements()) {
+ v val = (v) h.get(e.nextElement());
+ retval += "<TR><TD><font size = 2>" +
val.messageType + "</FONT></TD><TD ALIGN = right><font size = 2>" + val.sent + "/" +
val.received + "</FONT></TD></TR>";
+ }
+ }else
+ retval += "<TR BGCOLOR = #E7EDFE><TD><font size =
2>No messages transfered yet</FONT></TD>";
+
+ retval += "</TABLE></TD></TR></TABLE>";
+ return retval;
+ }
+
}
final MessageAccounter messageAccounter = new MessageAccounter();
Index: OpenConnectionManager.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/OpenConnectionManager.java,v
retrieving revision 1.160
retrieving revision 1.161
diff -u -w -r1.160 -r1.161
--- OpenConnectionManager.java 4 Nov 2003 12:32:11 -0000 1.160
+++ OpenConnectionManager.java 4 Nov 2003 15:16:44 -0000 1.161
@@ -1709,6 +1709,7 @@
float outboundConnectionSuccessRatio;
String version,address;
Identity identity;
+ PeerHandler.MessageAccounter acc;
PeerHandlerDataSnapshot(){}
void copyLargest(PeerHandlerDataSnapshot other)
{
@@ -1752,6 +1753,7 @@
connectionAttempts = p.getOutboundConnectionAttempts();
connectionSuccesses = p.getOutboundConnectionSuccesses();
outboundConnectionSuccessRatio =
p.getOutboundConnectionSuccessRatio();
+ acc = p.getMessageAccounter();
}
}
PeerHTMLRenderer()
@@ -1853,22 +1855,24 @@
}
}
- pw.println("<TD colspan = 2 width = 200
>"+peerAddress+" (version "+peerVersion+")</TD>");
- colsUsed = colsUsed+2;
+ pw.println("<TD colspan = 2 width = 200 ><font size =
2>"+peerAddress+", Ver: "+peerVersion);
if(viewLevel>1)
- {
- pw.println("<TD>"+p.identity.toString()+"</TD>");
- colsUsed++;
- }
+ pw.println(", ID: "+p.identity.toString().replaceAll("
"," "));
+ colsUsed = colsUsed+2;
- if(colsUsed <4) //Pad to 4 columns
- pw.println("<TD COLSPAN="+(4-colsUsed)+"> </TD>");
+ pw.println("</FONT></TD>");
+
+ if(colsUsed <3) //Pad to 4 columns
+ pw.println("<TD COLSPAN="+(3-colsUsed)+"> </TD>");
if(inRoutingTable){
- pw.println("<TD>Routing information</TD>");
+ pw.println("<TD><font size = 2>Routing information</FONT></TD>");
colsUsed = 1;
- if(colsUsed <4) //Pad to another 4 columns
- pw.println("<TD COLSPAN="+(4-colsUsed)+"> </TD>");
+ if(colsUsed <2) //Pad to another 4 columns
+ pw.println("<TD COLSPAN="+(2-colsUsed)+"> </TD>");
+ }
+ if(viewLevel>0){
+ pw.println("<TD><font size =
2>Messages transfered</FONT></TD>");
}
pw.println("</TR>");
@@ -1899,7 +1903,7 @@
id = null;
}
- renderPeerHandlerCell(pw,req,"Data queued",v1,v2,id,vG1,vG2,gLabel);
+ renderPeerHandlerCell(pw,req,"Data
queued",v1,v2,id,vG1,vG2,gLabel,viewLevel>0?p.acc:null);
//Data Transfered
@@ -1931,7 +1935,7 @@
}
}
- renderPeerHandlerCell(pw,req,"Data transfered",v1,v2,id,vG1,vG2,gLabel);
+ renderPeerHandlerCell(pw,req,"Data
transfered",v1,v2,id,vG1,vG2,gLabel,null);
//MessageQueue
if(viewLevel ==0){
@@ -1959,7 +1963,7 @@
id = null;
}
}
- renderPeerHandlerCell(pw,req,"Messages queued",v1,v2,id,vG1,vG2,gLabel);
+ renderPeerHandlerCell(pw,req,"Messages
queued",v1,v2,id,vG1,vG2,gLabel,null);
if (!inRoutingTable) {
vG1 = vG2 = null;
gLabel = null;
@@ -1987,14 +1991,11 @@
v1 = new
Value("sent",String.valueOf(p.messagesSent),"7810D0",calculateBarLength(p.messagesSent,normalizeTo.messagesSent,normalizeTo.messagesReceived));
v2 = new
Value("received",String.valueOf(p.messagesReceived),"252597",calculateBarLength(p.messagesReceived,normalizeTo.messagesReceived,normalizeTo.messagesSent));
}
- renderPeerHandlerCell(pw,req,"Messages
handled",v1,v2,id,vG1,vG2,gLabel);
+ renderPeerHandlerCell(pw,req,"Messages
handled",v1,v2,id,vG1,vG2,gLabel,null);
}else{
v1 = new
Value("sucesses",String.valueOf(p.messagesSent),"7810D0",calculateBarLength(p.messagesSent,normalizeTo.messagesSent,normalizeTo.messagesSendFailed));
v2 = new
Value("failures",String.valueOf(p.messagesSendFailed),"252597",calculateBarLength(p.messagesSendFailed,normalizeTo.messagesSendFailed,normalizeTo.messagesSent));
- renderPeerHandlerCell(pw,req,"Messages sent",v1,v2,id,vG1,vG2,gLabel);
- //v1 = new
Value("sucesses",String.valueOf(p.messagesReceived),"7810D0",calculateBarLength(p.messagesReceived,normalizeTo.messagesReceived,normalizeTo.messagesReceiveFailed));
- //v2 = new
Value("failures",String.valueOf(p.messagesReceiveFailed),"252597",calculateBarLength(p.messagesReceiveFailed,normalizeTo.messagesReceiveFailed,normalizeTo.messagesReceived));
- //renderPeerHandlerCell(pw,req,"Messages
received",v1,v2,id,vG1,vG2,gLabel);
+ renderPeerHandlerCell(pw,req,"Messages
sent",v1,v2,id,vG1,vG2,gLabel,null);
}
@@ -2023,7 +2024,7 @@
id = p.identity;
}
}
- renderPeerHandlerCell(pw,req,"Time",v1,v2,id,vG1,vG2,gLabel);
+ renderPeerHandlerCell(pw,req,"Time",v1,v2,id,vG1,vG2,gLabel,null);
//Open Connections
if (viewLevel == 0) {
@@ -2037,7 +2038,7 @@
vG2 = null;
gLabel = null;
id = null;
- renderPeerHandlerCell(pw,req,"Open connections",v1,v2,id,vG1,vG2,gLabel);
+ renderPeerHandlerCell(pw,req,"Open
connections",v1,v2,id,vG1,vG2,gLabel,null);
//Connection Attempts
vG1 = null;
@@ -2049,7 +2050,7 @@
else if (viewLevel > 1) {
v1 = new
Value("total",String.valueOf(p.connectionAttempts),"7810D0",calculateBarLength(p.connectionAttempts,normalizeTo.connectionAttempts,normalizeTo.connectionSuccesses));
v2 = new
Value("successes",String.valueOf(p.connectionSuccesses),"252597",calculateBarLength(p.connectionSuccesses,normalizeTo.connectionSuccesses,normalizeTo.inboundConnectionsCount));
- renderPeerHandlerCell(pw,req,"Connection
attempts",v1,v2,id,vG1,vG2,gLabel);
+ renderPeerHandlerCell(pw,req,"Connection
attempts",v1,v2,id,vG1,vG2,gLabel,null);
}
pw.println("</TABLE></TD></TR></TABLE>");
@@ -2057,10 +2058,10 @@
}
protected void renderPeerHandlerCell(PrintWriter pw, HttpServletRequest req,
String label,String data,String barColor, long barLength) {
- renderPeerHandlerCell(pw,req,label,new
Value(null,data,barColor,barLength),null,null,null,null,null);
+ renderPeerHandlerCell(pw,req,label,new
Value(null,data,barColor,barLength),null,null,null,null,null,null);
}
- protected void renderPeerHandlerCell(PrintWriter pw, HttpServletRequest req,
String label, Value v1, Value v2,Identity idGraph,Value vGraphValue1,Value
vGraphValue2,String vGraphValueLabelString) {
+ protected void renderPeerHandlerCell(PrintWriter pw, HttpServletRequest req,
String label, Value v1, Value v2,Identity idGraph,Value vGraphValue1,Value
vGraphValue2,String vGraphValueLabelString,PeerHandler.MessageAccounter renderAcc) {
String labelString,dataString;
if(v2 == null){
labelString = "<font size = 2>"+label.replaceAll("
"," ")+"</font>";
@@ -2095,8 +2096,12 @@
rtGraphValueDataString = "<font size = 2
color="+vGraphValue1.barColor+">"+vGraphValue1.data.replaceAll("
"," ")+"</font><font size = 2 >/</font><font size = 2
color="+vGraphValue2.barColor+">"+vGraphValue2.data.replaceAll(" "," ")+
"</font>";
fullString =
"<TD>"+rtGraphValueLabelString+"</TD><TD>" + rtGraphValueDataString+ "</TD>";
}
+ if(renderAcc != null){
+ fullString += "<TD ROWSPAN =18
valign=TOP>"+renderAcc.toHTML()+"</TD>";
+ }
pw.println("<TR><TD>"+labelString+"</TD><TD>" + dataString+ "</TD>");
- pw.println("<TD ROWSPAN = "+(v2==null?"2":"3")+"> </TD><TD ROWSPAN =
"+(v2==null?"2":"3")+">[History graph here]</TD>"+fullString+rtGraphString+"</TR>");
+ //pw.println("<TD ROWSPAN = "+(v2==null?"2":"3")+"> </TD><TD ROWSPAN
=
"+(v2==null?"2":"3")+">[History graph here]</TD>"+fullString+rtGraphString+"</TR>");
+ pw.println("<TD ROWSPAN =
"+(v2==null?"2":"3")+"> </TD>"+fullString+rtGraphString+"</TR>");
pw.println("<TR height = 3px><TD COLSPAN=2><IMG height = 4
width="+v1.barLength+"
SRC='/servlet/coloredpixel?color="+v1.barColor+"'></IMG></TD></TR>");
if(v2 != null)
pw.println("<TR height = 3px><TD COLSPAN=2><IMG height = 4
width="+v2.barLength+"
SRC='/servlet/coloredpixel?color="+v2.barColor+"'></IMG></TD></TR>");
_______________________________________________
cvs mailing list
[EMAIL PROTECTED]
http://dodo.freenetproject.org/cgi-bin/mailman/listinfo/cvs