Make SpinPolicy configurable in DisruptorBlockingQueueFactory

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/68e8ecb8
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/68e8ecb8
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/68e8ecb8

Branch: refs/heads/master
Commit: 68e8ecb810adf46819b7181b45512a111cfd32b4
Parents: c2d75fa
Author: Matt Sicker <boa...@gmail.com>
Authored: Fri Jun 17 19:07:59 2016 -0500
Committer: Matt Sicker <boa...@gmail.com>
Committed: Fri Jun 17 19:07:59 2016 -0500

----------------------------------------------------------------------
 .../core/async/DisruptorBlockingQueueFactory.java  | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/68e8ecb8/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorBlockingQueueFactory.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorBlockingQueueFactory.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorBlockingQueueFactory.java
index add375d..9b85ae6 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorBlockingQueueFactory.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorBlockingQueueFactory.java
@@ -3,8 +3,10 @@ package org.apache.logging.log4j.core.async;
 import java.util.concurrent.BlockingQueue;
 
 import com.conversantmedia.util.concurrent.DisruptorBlockingQueue;
+import com.conversantmedia.util.concurrent.SpinPolicy;
 import org.apache.logging.log4j.core.config.Node;
 import org.apache.logging.log4j.core.config.plugins.Plugin;
+import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
 
 /**
@@ -14,13 +16,22 @@ import 
org.apache.logging.log4j.core.config.plugins.PluginFactory;
  */
 @Plugin(name = "DisruptorBlockingQueue", category = Node.CATEGORY, elementType 
= BlockingQueueFactory.ELEMENT_TYPE)
 public class DisruptorBlockingQueueFactory<E> implements 
BlockingQueueFactory<E> {
+
+    private final SpinPolicy spinPolicy;
+
+    private DisruptorBlockingQueueFactory(final SpinPolicy spinPolicy) {
+        this.spinPolicy = spinPolicy;
+    }
+
     @Override
     public BlockingQueue<E> create(int capacity) {
-        return new DisruptorBlockingQueue<>(capacity);
+        return new DisruptorBlockingQueue<>(capacity, spinPolicy);
     }
 
     @PluginFactory
-    public static <E> DisruptorBlockingQueueFactory<E> createFactory() {
-        return new DisruptorBlockingQueueFactory<>();
+    public static <E> DisruptorBlockingQueueFactory<E> createFactory(
+        @PluginAttribute(value = "SpinPolicy", defaultString = "WAITING") 
final SpinPolicy spinPolicy
+    ) {
+        return new DisruptorBlockingQueueFactory<>(spinPolicy);
     }
 }

Reply via email to