package com.juick.jabber.ws; import org.springframework.jdbc.core.JdbcTemplate; import java.io.PrintWriter; import java.nio.ByteBuffer; import java.util.Iterator; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author ugnich */ public class WSKeepAlive implements Runnable { private static final Logger logger = Logger.getLogger(WSKeepAlive.class.getName()); JdbcTemplate sql; ByteBuffer pingBytes; ByteBuffer closeBytes; public WSKeepAlive(JdbcTemplate sql) { this.sql = sql; //pingBytes = ByteBuffer.allocate(2); //pingBytes.put((byte) 0x8A); // PONG FRAME //pingBytes.put((byte) 0x00); // 0 byte long pingBytes = ByteBuffer.allocate(3); pingBytes.put((byte) 0x81); // TEXT FRAME pingBytes.put((byte) 0x01); // 1 byte long pingBytes.put((byte) 0x20); // ' ' pingBytes.flip(); closeBytes = ByteBuffer.allocate(2); closeBytes.put((byte) 0x88); // CLOSE FRAME closeBytes.put((byte) 0x00); // 0 byte long closeBytes.flip(); } @Override public void run() { while (true) { PrintWriter statsFile = null; if (Main.STATSFILE != null) { try { statsFile = new PrintWriter(Main.STATSFILE, "UTF-8"); } catch (Exception e) { statsFile = null; logger.severe("WSKeepAlive statsFile: " + e); } } long now = System.currentTimeMillis(); synchronized (Main.clients) { if (statsFile != null) { statsFile.write("
IP | inactive | VUID | UID | MID | allM | allR |
---|---|---|---|---|---|---|
" + (s.clientName != null ? s.clientName : "?") + " | "); statsFile.print("" + inactive + " | "); statsFile.print("" + (s.VUID > 0 ? s.VUID : "") + " | "); statsFile.print("" + (s.UID > 0 ? s.UID : "") + " | "); statsFile.print("" + (s.MID > 0 ? s.MID : "") + " | "); statsFile.print("" + (s.allMessages ? "+" : "") + " | "); statsFile.print("" + (s.allReplies ? "+" : "") + " |