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