[jboss-svn-commits] JBoss Common SVN: r3333 - jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/handlers.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Jul 5 14:38:02 EDT 2009


Author: david.lloyd at jboss.com
Date: 2009-07-05 14:38:02 -0400 (Sun, 05 Jul 2009)
New Revision: 3333

Modified:
   jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/handlers/AsyncHandler.java
Log:
More options for async appender

Modified: jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/handlers/AsyncHandler.java
===================================================================
--- jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/handlers/AsyncHandler.java	2009-07-04 20:13:07 UTC (rev 3332)
+++ jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/handlers/AsyncHandler.java	2009-07-05 18:38:02 UTC (rev 3333)
@@ -40,6 +40,7 @@
     private final ThreadFactory threadFactory;
     private final Queue<ExtLogRecord> recordQueue;
     private final AsyncThread asyncThread = new AsyncThread();
+    private volatile OverflowAction overflowAction = OverflowAction.BLOCK;
 
     private boolean closed;
     private boolean taskRunning;
@@ -82,6 +83,28 @@
         this(DEFAULT_QUEUE_LENGTH);
     }
 
+    /**
+     * Get the overflow action.
+     *
+     * @return the overflow action
+     */
+    public OverflowAction getOverflowAction() {
+        return overflowAction;
+    }
+
+    /**
+     * Set the overflow action.
+     *
+     * @param overflowAction the overflow action
+     */
+    public void setOverflowAction(final OverflowAction overflowAction) {
+        if (overflowAction == null) {
+            throw new NullPointerException("overflowAction is null");
+        }
+        checkAccess();
+        this.overflowAction = overflowAction;
+    }
+
     /** {@inheritDoc} */
     public void publish(final ExtLogRecord record) {
         final Queue<ExtLogRecord> recordQueue = this.recordQueue;
@@ -96,6 +119,9 @@
                 startTaskIfNotRunning();
                 while (! recordQueue.offer(record)) {
                     try {
+                        if (overflowAction == OverflowAction.DISCARD) {
+                            return;
+                        }
                         recordQueue.wait();
                     } catch (InterruptedException e) {
                         intr = true;
@@ -188,4 +214,9 @@
             }
         }
     }
+
+    public enum OverflowAction {
+        BLOCK,
+        DISCARD,
+    }
 }




More information about the jboss-svn-commits mailing list