Author: j16sdiz
Date: 2009-04-12 11:31:25 +0000 (Sun, 12 Apr 2009)
New Revision: 26751

Modified:
   trunk/freenet/src/freenet/support/PrioritizedSerialExecutor.java
Log:
Logging

Modified: trunk/freenet/src/freenet/support/PrioritizedSerialExecutor.java
===================================================================
--- trunk/freenet/src/freenet/support/PrioritizedSerialExecutor.java    
2009-04-12 11:31:04 UTC (rev 26750)
+++ trunk/freenet/src/freenet/support/PrioritizedSerialExecutor.java    
2009-04-12 11:31:25 UTC (rev 26751)
@@ -9,7 +9,17 @@
 import freenet.support.io.NativeThread;
 
 public class PrioritizedSerialExecutor implements Executor {
+       private static volatile boolean logMINOR;
        
+       static {
+               Logger.registerLogThresholdCallback(new LogThresholdCallback() {
+                       @Override
+                       public void shouldUpdate() {
+                               logMINOR = Logger.shouldLog(Logger.MINOR, this);
+                       }
+               });
+       }
+       
        private final LinkedList<Runnable>[] jobs;
        private final int priority;
        private final int defaultPriority;
@@ -46,7 +56,6 @@
                        }
                        try {
                        while(true) {
-                               boolean logMINOR = 
Logger.shouldLog(Logger.MINOR, this);
                                Runnable job = null;
                                synchronized(jobs) {
                                        job = checkQueue();
@@ -115,7 +124,7 @@
                        if(!invertOrder) {
                                for(int i=0;i<jobs.length;i++) {
                                        if(!jobs[i].isEmpty()) {
-                                               
if(Logger.shouldLog(Logger.MINOR, this))
+                                               if(logMINOR)
                                                        Logger.minor(this, 
"Chosen job at priority "+i);
                                                return (Runnable) 
jobs[i].removeFirst();
                                        }
@@ -123,7 +132,7 @@
                        } else {
                                for(int i=jobs.length-1;i>=0;i--) {
                                        if(!jobs[i].isEmpty()) {
-                                               
if(Logger.shouldLog(Logger.MINOR, this))
+                                               if(logMINOR)
                                                        Logger.minor(this, 
"Chosen job at priority "+i);
                                                return (Runnable) 
jobs[i].removeFirst();
                                        }
@@ -162,11 +171,11 @@
                                }
                        }
                        if(!empty)
-                               reallyStart(Logger.shouldLog(Logger.MINOR, 
this));
+                               reallyStart();
                }
        }
        
-       private void reallyStart(boolean logMINOR) {
+       private void reallyStart() {
                synchronized(jobs) {
                        if(running) {
                                Logger.error(this, "Not reallyStart()ing: 
ALREADY RUNNING", new Exception("error"));
@@ -186,20 +195,18 @@
        }
 
        public void execute(Runnable job, int prio, String jobName) {
-               boolean logMINOR = Logger.shouldLog(Logger.MINOR, this);
                synchronized(jobs) {
                        if(logMINOR) 
                                Logger.minor(this, "Running "+jobName+" : 
"+job+" priority "+prio+" running="+running+" waiting="+waiting);
                        jobs[prio].addLast(job);
                        jobs.notifyAll();
                        if(!running && realExecutor != null) {
-                               reallyStart(logMINOR);
+                               reallyStart();
                        }
                }
        }
 
        public void executeNoDupes(Runnable job, int prio, String jobName) {
-               boolean logMINOR = Logger.shouldLog(Logger.MINOR, this);
                synchronized(jobs) {
                        if(logMINOR) 
                                Logger.minor(this, "Running "+jobName+" : 
"+job+" priority "+prio+" running="+running+" waiting="+waiting);
@@ -211,7 +218,7 @@
                        jobs[prio].addLast(job);
                        jobs.notifyAll();
                        if(!running && realExecutor != null) {
-                               reallyStart(logMINOR);
+                               reallyStart();
                        }
                }
        }

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to