1 package freecs.external; 2 3 import freecs.Server; 4 import freecs.content.ContentContainer; 5 import freecs.core.GroupManager; 6 import freecs.core.RequestReader; 7 import freecs.core.UserManager; 8 import freecs.interfaces.IRequest; 9 import freecs.util.logger.LogWriter; 10 11 public class StateRequestHandler extends AbstractRequestHandler { 12 13 public StateRequestHandler(String handlerName) { 14 super(handlerName); 15 } 16 17 20 21 public void handle(IRequest req, ContentContainer c) { 22 checkAccessIp(req,c); 23 24 if (req.getValue("gc")!=null) { 25 System.gc(); 26 try { 27 Thread.sleep(1000); 28 } catch (InterruptedException e) { 29 } 30 } 31 32 StringBuffer sb = new StringBuffer (); 33 sb.append ("<html><head><title>state query</title><meta http-equiv=\"refresh\" content=\"4\"></head><body bgcolor=ffff99 text=000000><table border=0><tr><td colspan=4 align=center>FreeCS ("); 34 sb.append (Server.getVersion ()); 35 sb.append (")</td></tr><tr><td width=10></td><td witdh=200 align=right>Laufzeit:</td><td width=10></td><td width=400>"); 36 long sec=0, min=0, hour=0, day=0; 37 sec = (System.currentTimeMillis()-Server.startupTime)/1000; 38 min = sec/60; 39 if (min>0) 40 sec = sec-min*60; 41 if (min >=60){ 42 hour = min/60; 43 min = min -(hour*60); 44 } 45 if (hour >=24){ 46 day = hour/24; 47 hour = hour -(day*24); 48 } 49 sb.append (day); 50 sb.append (" day "); 51 sb.append (hour); 52 sb.append (" h "); 53 sb.append (min); 54 sb.append (" min "); 55 sb.append (sec); 56 sb.append (" sec"); 57 sb.append ("</td></tr><tr><td colspan=4 bgcolor=000000 height=1></td></tr><tr><td width=10></td><td witdh=200 align=right>Anzahl der User:</td><td width=10></td><td width=400>"); 58 UserManager umgr = UserManager.mgr; 59 sb.append (umgr.getActiveUserCount ()); 60 sb.append ("("); 61 sb.append (umgr.getHighWaterMark()); 62 sb.append (" max)"); 63 sb.append ("</td></tr><tr><td colspan=4 bgcolor=000000 height=1></td></tr><tr><td width=10></td><td witdh=200 align=right>Anzahl der Räume:</td><td width=10></td><td width=400>"); 64 GroupManager gmgr = GroupManager.mgr; 65 sb.append (gmgr.openGroupsCount()); 66 sb.append ("("); 67 sb.append (gmgr.getHighWaterMark()); 68 sb.append (" max)"); 69 sb.append ("</td></tr><tr><td colspan=4 bgcolor=000000 height=1></td></tr><tr><td width=10></td><td witdh=200 align=right>Anzahl der Reader-Threads:</td><td width=10></td><td width=400>"); 70 sb.append (RequestReader.activeReaders ()); 71 if (!Server.srv.THREAD_PER_READ) { 72 sb.append ("</td></tr><tr><td colspan=4 bgcolor=000000 height=1></td></tr><tr><td width=10></td><td witdh=200 align=right>Reader-Queue-Usage:</td><td width=10></td><td width=400>"); 73 double d[] = RequestReader.getOveralUsage(); 74 for (int i = 0; i < d.length; i++) { 75 sb.append (d[i]); 76 sb.append ("%"); 77 if (i < d.length) 78 sb.append (", "); 79 } 80 } 81 sb.append ("</td></tr><tr><td colspan=4 bgcolor=000000 height=1></td></tr><tr><td width=10></td><td witdh=200 align=right>Speicher:</td><td width=10></td><td width=400>"); 82 Runtime r = Runtime.getRuntime (); 83 long free = r.freeMemory (); 84 long total = r.totalMemory (); 85 long max = r.maxMemory (); 86 long used = total - free; 87 sb.append ("free: "); 88 sb.append (free); 89 sb.append ("<br>used: "); 90 sb.append (used); 91 sb.append ("<br>total/maxTotal: "); 92 sb.append (total); 93 sb.append ("/"); 94 sb.append (max); 95 sb.append ("<br>Usagepercentage: "); 96 sb.append (100 - (free / (total / 100))); 97 sb.append ("</td></tr></table>"); 98 sb.append ("<a HREF=/STATE?gc=now>run garbagecollector</a>"); 99 sb.append ("LogQueue: ").append (LogWriter.instance.logQueue.size()); 100 sb.append (" of ").append(LogWriter.instance.logQueue.capacity()); 101 sb.append ("<br />LogWriter priority: " + LogWriter.instance.getPriority()); 102 sb.append ("</body></html>"); 103 c.wrap (sb.toString()); 104 } 105 106 } 107 | Popular Tags |