diff options
author | 2016-07-07 15:13:47 +0300 | |
---|---|---|
committer | 2016-07-07 15:13:47 +0300 | |
commit | e5c8298beee5dde90ca98cc4707faac4bf0e2f0c (patch) | |
tree | 10178a0103ae8ac17849e56914b87b0ee681d0ba /juick-www/src/main/java/com/juick/xmpp/s2s/CleaningUp.java | |
parent | d85424021a63c1519e18bd6518ad3424de61fb9f (diff) |
reorganize project
Diffstat (limited to 'juick-www/src/main/java/com/juick/xmpp/s2s/CleaningUp.java')
-rw-r--r-- | juick-www/src/main/java/com/juick/xmpp/s2s/CleaningUp.java | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/juick-www/src/main/java/com/juick/xmpp/s2s/CleaningUp.java b/juick-www/src/main/java/com/juick/xmpp/s2s/CleaningUp.java new file mode 100644 index 00000000..14d97ed8 --- /dev/null +++ b/juick-www/src/main/java/com/juick/xmpp/s2s/CleaningUp.java @@ -0,0 +1,107 @@ +package com.juick.xmpp.s2s; + +import java.io.FileNotFoundException; +import java.io.PrintWriter; +import java.io.UnsupportedEncodingException; +import java.util.Iterator; + +/** + * + * @author ugnich + */ +public class CleaningUp implements Runnable { + XMPPComponent xmpp; + + public CleaningUp(XMPPComponent xmpp) { + this.xmpp = xmpp; + } + + @Override + public void run() { + while (true) { + try { + PrintWriter statsFile = new PrintWriter(xmpp.STATSFILE, "UTF-8"); + statsFile.write("<html><body><h2>Threads: " + Thread.activeCount() + "</h2>"); + statsFile.write("<h2>Out (" + xmpp.outConnections.size() + ")</h2><table border=1><tr><th>to</th><th>sid</th><th>inactive</th><th>out packets</th><th>out bytes</th></tr>"); + + long now = System.currentTimeMillis(); + + synchronized (xmpp.outConnections) { + for (Iterator<ConnectionOut> i = xmpp.outConnections.iterator(); i.hasNext();) { + ConnectionOut c = i.next(); + int inactive = (int) ((double) (now - c.tsLocalData) / 1000.0); + if (inactive > 900) { + c.closeConnection(); + i.remove(); + } else { + statsFile.write(" <tr>"); + statsFile.write(" <td>" + c.to + "</td>\n"); + statsFile.write(" <td>" + c.streamID + "</td>\n"); + statsFile.write(" <td>" + inactive + "</td>\n"); + statsFile.write(" <td>" + c.packetsLocal + "</td>\n"); + statsFile.write(" <td>" + c.bytesLocal + "</td>\n"); + statsFile.write(" <tr>"); + } + } + } + + statsFile.write("</table><h2>In (" + xmpp.inConnections.size() + ")</h2><table border=1><tr><th>from</th><th>sid</th><th>inactive</th><th>in packets</th></tr>"); + + synchronized (xmpp.inConnections) { + for (Iterator<ConnectionIn> i = xmpp.inConnections.iterator(); i.hasNext();) { + ConnectionIn c = i.next(); + int inactive = (int) ((double) (now - c.tsRemoteData) / 1000.0); + if (inactive > 900) { + c.closeConnection(); + i.remove(); + } else { + statsFile.write(" <tr>"); + if (c.from.isEmpty()) { + statsFile.write(" <td> </td>\n"); + } else if (c.from.size() == 1) { + statsFile.write(" <td>" + c.from.get(0) + "</td>\n"); + } else { + String out = " <td>"; + for (int n = 0; n < c.from.size(); n++) { + if (n > 0) { + out += "<br/>"; + } + out += c.from.get(n); + } + statsFile.write(out + "</td>\n"); + } + statsFile.write(" <td>" + c.streamID + "</td>\n"); + statsFile.write(" <td>" + inactive + "</td>\n"); + statsFile.write(" <td>" + c.packetsRemote + "</td>\n"); + statsFile.write(" <tr>"); + } + } + } + + statsFile.write("</table><h2>Cache (" + xmpp.outCache.size() + ")</h2><table border=1><tr><th>host</th><th>live</th><th>size</th></tr>"); + + synchronized (xmpp.outCache) { + for (Iterator<CacheEntry> i = xmpp.outCache.iterator(); i.hasNext();) { + CacheEntry c = i.next(); + int inactive = (int) ((double) (now - c.tsCreated) / 1000.0); + if (inactive > 600) { + i.remove(); + } else { + statsFile.write("<tr><td>" + c.hostname + "</td><td>" + inactive + "</td><td>" + c.xml.length() + "</td></tr>"); + } + } + } + + statsFile.write("</table></body></html>"); + statsFile.close(); + + try { + Thread.sleep(10000); + } catch (InterruptedException e) { + } + } catch (FileNotFoundException e) { + } catch (UnsupportedEncodingException e) { + } + } + } +} |