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    }