From 9c63f0865f06a539f2abe8f88015616488b876f4 Mon Sep 17 00:00:00 2001
From: Christian Wulf <chw@informatik.uni-kiel.de>
Date: Wed, 11 Mar 2015 16:45:23 +0100
Subject: [PATCH] added SpScIntraThreadPipe

---
 .../framework/pipe/SpScIntraThreadPipe.java   | 48 +++++++++++++++++++
 src/site/markdown/wiki                        |  2 +-
 2 files changed, 49 insertions(+), 1 deletion(-)
 create mode 100644 src/main/java/teetime/framework/pipe/SpScIntraThreadPipe.java

diff --git a/src/main/java/teetime/framework/pipe/SpScIntraThreadPipe.java b/src/main/java/teetime/framework/pipe/SpScIntraThreadPipe.java
new file mode 100644
index 00000000..459ea0f1
--- /dev/null
+++ b/src/main/java/teetime/framework/pipe/SpScIntraThreadPipe.java
@@ -0,0 +1,48 @@
+package teetime.framework.pipe;
+
+import java.util.Queue;
+
+import org.jctools.queues.QueueFactory;
+import org.jctools.queues.spec.ConcurrentQueueSpec;
+
+import teetime.framework.AbstractIntraThreadPipe;
+import teetime.framework.InputPort;
+import teetime.framework.OutputPort;
+
+/**
+ * Represents a less efficient implementation of an intra-thread pipe.
+ *
+ * @author Christian Wulf
+ *
+ * @param <T>
+ */
+public final class SpScIntraThreadPipe<T> extends AbstractIntraThreadPipe {
+
+	private final Queue<Object> queue;
+
+	public SpScIntraThreadPipe(final OutputPort<? extends T> sourcePort, final InputPort<T> targetPort) {
+		super(sourcePort, targetPort);
+		queue = QueueFactory.newQueue(ConcurrentQueueSpec.createBoundedSpsc(1));
+	}
+
+	@Override
+	public boolean add(final Object element) {
+		return queue.offer(element);
+	}
+
+	@Override
+	public boolean isEmpty() {
+		return queue.isEmpty();
+	}
+
+	@Override
+	public int size() {
+		return queue.size();
+	}
+
+	@Override
+	public Object removeLast() {
+		return queue.poll();
+	}
+
+}
diff --git a/src/site/markdown/wiki b/src/site/markdown/wiki
index 63ccbbc8..0e447457 160000
--- a/src/site/markdown/wiki
+++ b/src/site/markdown/wiki
@@ -1 +1 @@
-Subproject commit 63ccbbc87bd2c0e6599ca91502149dba3cfb99de
+Subproject commit 0e4474577e1f49bc96e734c286b2d9e0363895e8
-- 
GitLab