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&nbsp;messages&nbsp;transfered&nbsp;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+"&nbsp;(version&nbsp;"+peerVersion+")</TD>");
-            colsUsed = colsUsed+2;
+            pw.println("<TD colspan = 2 width = 200 ><font size = 
2>"+peerAddress+",&nbsp;Ver:&nbsp;"+peerVersion);
             
             if(viewLevel>1)
-            {
-                pw.println("<TD>"+p.identity.toString()+"</TD>");
-                colsUsed++;
-            }
+                pw.println(", ID:&nbsp;"+p.identity.toString().replaceAll(" 
","&nbsp;"));
+                       colsUsed = colsUsed+2;
             
-            if(colsUsed <4) //Pad to 4 columns
-                pw.println("<TD COLSPAN="+(4-colsUsed)+">&nbsp;</TD>");
+                       pw.println("</FONT></TD>");
+            
+            if(colsUsed <3) //Pad to 4 columns
+                pw.println("<TD COLSPAN="+(3-colsUsed)+">&nbsp;</TD>");
             if(inRoutingTable){
-                pw.println("<TD>Routing&nbsp;information</TD>");
+                pw.println("<TD><font size = 2>Routing&nbsp;information</FONT></TD>");
                 colsUsed = 1;
-                if(colsUsed <4) //Pad to another 4 columns
-                    pw.println("<TD COLSPAN="+(4-colsUsed)+">&nbsp;</TD>");
+                if(colsUsed <2) //Pad to another 4 columns
+                    pw.println("<TD COLSPAN="+(2-colsUsed)+">&nbsp;</TD>");
+            }
+            if(viewLevel>0){
+                               pw.println("<TD><font size = 
2>Messages&nbsp;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(" 
","&nbsp;")+"</font>";
@@ -2095,8 +2096,12 @@
                                rtGraphValueDataString = "<font size = 2 
color="+vGraphValue1.barColor+">"+vGraphValue1.data.replaceAll(" 
","&nbsp;")+"</font><font size = 2 >/</font><font size = 2 
color="+vGraphValue2.barColor+">"+vGraphValue2.data.replaceAll(" ","&nbsp;")+ 
"</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")+">&nbsp;</TD><TD ROWSPAN = 
"+(v2==null?"2":"3")+">[History&nbsp;graph&nbsp;here]</TD>"+fullString+rtGraphString+"</TR>");
+            //pw.println("<TD ROWSPAN = "+(v2==null?"2":"3")+">&nbsp;</TD><TD ROWSPAN 
= 
"+(v2==null?"2":"3")+">[History&nbsp;graph&nbsp;here]</TD>"+fullString+rtGraphString+"</TR>");
+                       pw.println("<TD ROWSPAN = 
"+(v2==null?"2":"3")+">&nbsp;</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

Reply via email to