Skip to content
Snippets Groups Projects
Commit 6acbb520 authored by Christian Wulf's avatar Christian Wulf
Browse files

made PipeFactory singleton

parent aaf821c6
No related branches found
No related tags found
No related merge requests found
...@@ -3,10 +3,6 @@ package teetime.variant.methodcallWithPorts.framework.core; ...@@ -3,10 +3,6 @@ package teetime.variant.methodcallWithPorts.framework.core;
/** /**
* The <code>ProducerStage</code> produces at least one element at each execution.<br> * The <code>ProducerStage</code> produces at least one element at each execution.<br>
* *
* @reschedulability
* This stage is executed as long as its execute() method decided to do so.<br>
* Refer to {@link AbstractStage#isReschedulable} for more information.
*
* @author Christian Wulf * @author Christian Wulf
* *
* @param <O> * @param <O>
......
...@@ -30,7 +30,9 @@ public class PipeFactory { ...@@ -30,7 +30,9 @@ public class PipeFactory {
private final Map<String, IPipeFactory> pipeFactories = new HashMap<String, IPipeFactory>(); private final Map<String, IPipeFactory> pipeFactories = new HashMap<String, IPipeFactory>();
public PipeFactory() { public static PipeFactory INSTANCE = new PipeFactory();
private PipeFactory() {
try { try {
List<IPipeFactory> pipeFactories = PipeFactoryLoader.loadFromFile("conf/pipe-factories.conf"); List<IPipeFactory> pipeFactories = PipeFactoryLoader.loadFromFile("conf/pipe-factories.conf");
for (IPipeFactory pipeFactory : pipeFactories) { for (IPipeFactory pipeFactory : pipeFactories) {
......
...@@ -45,7 +45,7 @@ import kieker.common.util.filesystem.FSUtil; ...@@ -45,7 +45,7 @@ import kieker.common.util.filesystem.FSUtil;
*/ */
public class Dir2RecordsFilter extends Pipeline<ClassNameRegistryCreationFilter, Merger<IMonitoringRecord>> { public class Dir2RecordsFilter extends Pipeline<ClassNameRegistryCreationFilter, Merger<IMonitoringRecord>> {
private final PipeFactory pipeFactory = new PipeFactory(); private final PipeFactory pipeFactory = PipeFactory.INSTANCE;
private ClassNameRegistryRepository classNameRegistryRepository; private ClassNameRegistryRepository classNameRegistryRepository;
/** /**
......
...@@ -44,6 +44,7 @@ public class MethodCallThroughputAnalysis14 extends Analysis { ...@@ -44,6 +44,7 @@ public class MethodCallThroughputAnalysis14 extends Analysis {
private int numNoopFilters; private int numNoopFilters;
private List<TimestampObject> timestampObjects; private List<TimestampObject> timestampObjects;
private Runnable runnable; private Runnable runnable;
private final PipeFactory pipeFactory = PipeFactory.INSTANCE;
@Override @Override
public void init() { public void init() {
...@@ -73,18 +74,17 @@ public class MethodCallThroughputAnalysis14 extends Analysis { ...@@ -73,18 +74,17 @@ public class MethodCallThroughputAnalysis14 extends Analysis {
pipeline.setFirstStage(objectProducer); pipeline.setFirstStage(objectProducer);
pipeline.setLastStage(collectorSink); pipeline.setLastStage(collectorSink);
PipeFactory pipeFactory = new PipeFactory(); IPipe<TimestampObject> pipe = this.pipeFactory.create(ThreadCommunication.INTRA);
IPipe<TimestampObject> pipe = pipeFactory.create(ThreadCommunication.INTRA);
pipe.connectPorts(objectProducer.getOutputPort(), startTimestampFilter.getInputPort()); pipe.connectPorts(objectProducer.getOutputPort(), startTimestampFilter.getInputPort());
pipe = pipeFactory.create(ThreadCommunication.INTRA); pipe = this.pipeFactory.create(ThreadCommunication.INTRA);
pipe.connectPorts(startTimestampFilter.getOutputPort(), noopFilters[0].getInputPort()); pipe.connectPorts(startTimestampFilter.getOutputPort(), noopFilters[0].getInputPort());
for (int i = 0; i < noopFilters.length - 1; i++) { for (int i = 0; i < noopFilters.length - 1; i++) {
pipe = pipeFactory.create(ThreadCommunication.INTRA); pipe = this.pipeFactory.create(ThreadCommunication.INTRA);
pipe.connectPorts(noopFilters[i].getOutputPort(), noopFilters[i + 1].getInputPort()); pipe.connectPorts(noopFilters[i].getOutputPort(), noopFilters[i + 1].getInputPort());
} }
pipe = pipeFactory.create(ThreadCommunication.INTRA); pipe = this.pipeFactory.create(ThreadCommunication.INTRA);
pipe.connectPorts(noopFilters[noopFilters.length - 1].getOutputPort(), stopTimestampFilter.getInputPort()); pipe.connectPorts(noopFilters[noopFilters.length - 1].getOutputPort(), stopTimestampFilter.getInputPort());
pipe = pipeFactory.create(ThreadCommunication.INTRA); pipe = this.pipeFactory.create(ThreadCommunication.INTRA);
pipe.connectPorts(stopTimestampFilter.getOutputPort(), collectorSink.getInputPort()); pipe.connectPorts(stopTimestampFilter.getOutputPort(), collectorSink.getInputPort());
return pipeline; return pipeline;
......
...@@ -54,7 +54,7 @@ public class MethodCallThroughputAnalysis17 extends Analysis { ...@@ -54,7 +54,7 @@ public class MethodCallThroughputAnalysis17 extends Analysis {
private ConstructorClosure<TimestampObject> inputObjectCreator; private ConstructorClosure<TimestampObject> inputObjectCreator;
private int numNoopFilters; private int numNoopFilters;
private final PipeFactory pipeFactory = new PipeFactory(); private final PipeFactory pipeFactory = PipeFactory.INSTANCE;
private final List<List<TimestampObject>> timestampObjectsList = new LinkedList<List<TimestampObject>>(); private final List<List<TimestampObject>> timestampObjectsList = new LinkedList<List<TimestampObject>>();
private Thread producerThread; private Thread producerThread;
......
...@@ -40,11 +40,7 @@ import kieker.common.record.IMonitoringRecord; ...@@ -40,11 +40,7 @@ import kieker.common.record.IMonitoringRecord;
public class RecordReaderConfiguration extends Configuration { public class RecordReaderConfiguration extends Configuration {
private final List<IMonitoringRecord> elementCollection = new LinkedList<IMonitoringRecord>(); private final List<IMonitoringRecord> elementCollection = new LinkedList<IMonitoringRecord>();
private final PipeFactory pipeFactory; private final PipeFactory pipeFactory = PipeFactory.INSTANCE;
public RecordReaderConfiguration() {
this.pipeFactory = new PipeFactory();
}
public void buildConfiguration() { public void buildConfiguration() {
HeadPipeline<?, ?> producerPipeline = this.buildProducerPipeline(); HeadPipeline<?, ?> producerPipeline = this.buildProducerPipeline();
......
...@@ -21,6 +21,8 @@ import teetime.variant.methodcallWithPorts.stage.basic.Sink; ...@@ -21,6 +21,8 @@ import teetime.variant.methodcallWithPorts.stage.basic.Sink;
public class ConnectionTypeTest { public class ConnectionTypeTest {
private final PipeFactory pipeFactory = PipeFactory.INSTANCE;
// tests for load-time validation // tests for load-time validation
@SuppressWarnings({ "unchecked", "rawtypes" }) @SuppressWarnings({ "unchecked", "rawtypes" })
...@@ -44,13 +46,11 @@ public class ConnectionTypeTest { ...@@ -44,13 +46,11 @@ public class ConnectionTypeTest {
StopTimestampFilter stopTimestampFilter = StopTimestampFilter.class.newInstance(); StopTimestampFilter stopTimestampFilter = StopTimestampFilter.class.newInstance();
Sink sink = Sink.class.newInstance(); Sink sink = Sink.class.newInstance();
PipeFactory pipeFactory = new PipeFactory(); IPipe pipe = this.pipeFactory.create(ThreadCommunication.INTRA);
IPipe pipe = pipeFactory.create(ThreadCommunication.INTRA);
pipe.connectPorts(objectProducer.getOutputPort(), startTimestampFilter.getInputPort()); pipe.connectPorts(objectProducer.getOutputPort(), startTimestampFilter.getInputPort());
pipe = pipeFactory.create(ThreadCommunication.INTRA); pipe = this.pipeFactory.create(ThreadCommunication.INTRA);
pipe.connectPorts(startTimestampFilter.getOutputPort(), stopTimestampFilter.getInputPort()); pipe.connectPorts(startTimestampFilter.getOutputPort(), stopTimestampFilter.getInputPort());
pipe = pipeFactory.create(ThreadCommunication.INTRA); pipe = this.pipeFactory.create(ThreadCommunication.INTRA);
pipe.connectPorts(stopTimestampFilter.getOutputPort(), sink.getInputPort()); pipe.connectPorts(stopTimestampFilter.getOutputPort(), sink.getInputPort());
// TypeVariable<Class<ObjectProducer>>[] objectProducerTypeParameters = ObjectProducer.class.getTypeParameters(); // TypeVariable<Class<ObjectProducer>>[] objectProducerTypeParameters = ObjectProducer.class.getTypeParameters();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment