001 package railo.runtime.engine; 002 003 import railo.commons.lang.types.RefBoolean; 004 import railo.runtime.config.ConfigServer; 005 import railo.runtime.config.ConfigServerImpl; 006 007 /** 008 * own thread how check the main thread and his data 009 */ 010 public final class Monitor extends Thread { 011 012 013 private static final long INTERVALL = 5000; 014 private final RefBoolean run; 015 private final ConfigServerImpl configServer; 016 017 /** 018 * @param contextes 019 * @param interval 020 * @param run 021 */ 022 public Monitor(ConfigServer configServer,RefBoolean run) { 023 024 this.run=run; 025 this.configServer=(ConfigServerImpl) configServer; 026 027 } 028 029 @Override 030 public void run() { 031 short tries=0; 032 while(run.toBooleanValue()) { 033 try { 034 sleep(INTERVALL); 035 } 036 catch (InterruptedException e) { 037 e.printStackTrace(); 038 } 039 040 if(!configServer.isMonitoringEnabled()) return; 041 railo.runtime.monitor.IntervallMonitor[] monitors = configServer.getIntervallMonitors(); 042 043 int logCount=0; 044 if(monitors!=null)for(int i=0;i<monitors.length;i++){ 045 if(monitors[i].isLogEnabled()) { 046 logCount++; 047 try { 048 monitors[i].log(); 049 } 050 catch (Throwable e) { 051 e.printStackTrace(); 052 } 053 } 054 } 055 056 if(logCount==0) { 057 tries++; 058 if(tries>=10)return; 059 } 060 } 061 } 062 063 }