aboutsummaryrefslogtreecommitdiff
path: root/juick-ws/src/main/java/com/juick/ws/s2s/CleaningUp.java
diff options
context:
space:
mode:
Diffstat (limited to 'juick-ws/src/main/java/com/juick/ws/s2s/CleaningUp.java')
-rw-r--r--juick-ws/src/main/java/com/juick/ws/s2s/CleaningUp.java109
1 files changed, 109 insertions, 0 deletions
diff --git a/juick-ws/src/main/java/com/juick/ws/s2s/CleaningUp.java b/juick-ws/src/main/java/com/juick/ws/s2s/CleaningUp.java
new file mode 100644
index 00000000..8140c829
--- /dev/null
+++ b/juick-ws/src/main/java/com/juick/ws/s2s/CleaningUp.java
@@ -0,0 +1,109 @@
+package com.juick.ws.s2s;
+
+import com.juick.ws.components.XMPPComponent;
+
+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.getOutConnections().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.getOutConnections()) {
+ for (Iterator<ConnectionOut> i = xmpp.getOutConnections().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.getInConnections().size() + ")</h2><table border=1><tr><th>from</th><th>sid</th><th>inactive</th><th>in packets</th></tr>");
+
+ synchronized (xmpp.getInConnections()) {
+ for (Iterator<ConnectionIn> i = xmpp.getInConnections().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>&nbsp;</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.getOutCache().size() + ")</h2><table border=1><tr><th>host</th><th>live</th><th>size</th></tr>");
+
+ synchronized (xmpp.getOutCache()) {
+ for (Iterator<CacheEntry> i = xmpp.getOutCache().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) {
+ }
+ }
+ }
+}