diff --git a/src/main/java/teetime/stage/IterableProducer.java b/src/main/java/teetime/stage/IterableProducer.java new file mode 100644 index 0000000000000000000000000000000000000000..7d9eadde0d7e7d686de39a6f0378acd776afb8d8 --- /dev/null +++ b/src/main/java/teetime/stage/IterableProducer.java @@ -0,0 +1,21 @@ +package teetime.stage; + +import teetime.framework.ProducerStage; + +public class IterableProducer<O extends Iterable<T>, T> extends ProducerStage<T> { + + private O iter = null; + + public IterableProducer(final O iter) { + this.iter = iter; + } + + @Override + protected void execute() { + for (T i : iter) { + this.send(this.outputPort, i); + } + + } + +} diff --git a/src/test/java/teetime/examples/pipe/SignalQueueConfiguration.java b/src/test/java/teetime/examples/pipe/SignalQueueConfiguration.java new file mode 100644 index 0000000000000000000000000000000000000000..b86c70230b1a40280c9509631f6d2abab34865c5 --- /dev/null +++ b/src/test/java/teetime/examples/pipe/SignalQueueConfiguration.java @@ -0,0 +1,24 @@ +package teetime.examples.pipe; + +import teetime.framework.AnalysisConfiguration; +import teetime.framework.ConsumerStage; +import teetime.framework.ProducerStage; +import teetime.framework.pipe.PipeFactoryRegistry.PipeOrdering; +import teetime.framework.pipe.PipeFactoryRegistry.ThreadCommunication; +import teetime.framework.pipe.SpScPipe; +import teetime.stage.Cache; +import teetime.stage.Clock; + +public class SignalQueueConfiguration extends AnalysisConfiguration { + + public SpScPipe pipe; + + public SignalQueueConfiguration() { + + ProducerStage<Long> first = new Clock(); + ConsumerStage<Long> second = new Cache<Long>(); + + pipe = (SpScPipe) PIPE_FACTORY_REGISTRY.getPipeFactory(ThreadCommunication.INTER, PipeOrdering.QUEUE_BASED, false) + .create(first.getOutputPort(), second.getInputPort()); + } +} diff --git a/src/test/java/teetime/examples/pipe/SignalQueueTest.java b/src/test/java/teetime/examples/pipe/SignalQueueTest.java new file mode 100644 index 0000000000000000000000000000000000000000..4b31ab2686bca1d73a7ae48670ffd7c8c3c18871 --- /dev/null +++ b/src/test/java/teetime/examples/pipe/SignalQueueTest.java @@ -0,0 +1,44 @@ +package teetime.examples.pipe; + +import java.util.ArrayList; + +import org.junit.Assert; +import org.junit.Test; + +import teetime.framework.pipe.SpScPipe; +import teetime.framework.signal.ISignal; +import teetime.framework.signal.StartingSignal; +import teetime.framework.signal.TerminatingSignal; +import teetime.framework.signal.ValidatingSignal; + +public class SignalQueueTest { + + @Test + public void executeTest() { + ArrayList<ISignal> list = new ArrayList<ISignal>(); + list.add(new StartingSignal()); + list.add(new TerminatingSignal()); + list.add(new ValidatingSignal()); + list.add(new StartingSignal()); + list.add(new TerminatingSignal()); + list.add(new ValidatingSignal()); + list.add(new StartingSignal()); + list.add(new TerminatingSignal()); + list.add(new ValidatingSignal()); + + SpScPipe pipe = new SignalQueueConfiguration().pipe; + for (ISignal s : list) { + pipe.setSignal(s); + } + + ArrayList<ISignal> secondList = new ArrayList<ISignal>(); + while (true) { + ISignal temp = pipe.getSignal(); + if (temp == null) { + break; + } + secondList.add(temp); + } + Assert.assertEquals(list, secondList); + } +}