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 {
@Override
public void run() {
while (true) {
try {
PrintWriter statsFile = new PrintWriter(S2SComponent.STATSFILE, "UTF-8");
statsFile.write("
Threads: " + Thread.activeCount() + "
");
statsFile.write("Out (" + S2SComponent.outConnections.size() + ")
to | sid | inactive | out packets | out bytes |
");
long now = System.currentTimeMillis();
synchronized (S2SComponent.outConnections) {
for (Iterator i = S2SComponent.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(" ");
statsFile.write(" " + c.to + " | \n");
statsFile.write(" " + c.streamID + " | \n");
statsFile.write(" " + inactive + " | \n");
statsFile.write(" " + c.packetsLocal + " | \n");
statsFile.write(" " + c.bytesLocal + " | \n");
statsFile.write("
");
}
}
}
statsFile.write("
In (" + S2SComponent.inConnections.size() + ")
from | sid | inactive | in packets |
");
synchronized (S2SComponent.inConnections) {
for (Iterator i = S2SComponent.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(" ");
if (c.from.isEmpty()) {
statsFile.write(" | \n");
} else if (c.from.size() == 1) {
statsFile.write(" " + c.from.get(0) + " | \n");
} else {
String out = " ";
for (int n = 0; n < c.from.size(); n++) {
if (n > 0) {
out += " ";
}
out += c.from.get(n);
}
statsFile.write(out + " | \n");
}
statsFile.write(" " + c.streamID + " | \n");
statsFile.write(" " + inactive + " | \n");
statsFile.write(" " + c.packetsRemote + " | \n");
statsFile.write("
");
}
}
}
statsFile.write("
Cache (" + S2SComponent.outCache.size() + ")
host | live | size |
");
synchronized (S2SComponent.outCache) {
for (Iterator i = S2SComponent.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("" + c.hostname + " | " + inactive + " | " + c.xml.length() + " |
");
}
}
}
statsFile.write("
");
statsFile.close();
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
}
} catch (FileNotFoundException e) {
} catch (UnsupportedEncodingException e) {
}
}
}
}