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;
/**
* 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
*
* @param <O>
......
......@@ -30,7 +30,9 @@ public class PipeFactory {
private final Map<String, IPipeFactory> pipeFactories = new HashMap<String, IPipeFactory>();
public PipeFactory() {
public static PipeFactory INSTANCE = new PipeFactory();
private PipeFactory() {
try {
List<IPipeFactory> pipeFactories = PipeFactoryLoader.loadFromFile("conf/pipe-factories.conf");
for (IPipeFactory pipeFactory : pipeFactories) {
......
......@@ -45,7 +45,7 @@ import kieker.common.util.filesystem.FSUtil;
*/
public class Dir2RecordsFilter extends Pipeline<ClassNameRegistryCreationFilter, Merger<IMonitoringRecord>> {
private final PipeFactory pipeFactory = new PipeFactory();
private final PipeFactory pipeFactory = PipeFactory.INSTANCE;
private ClassNameRegistryRepository classNameRegistryRepository;
/**
......
......@@ -44,6 +44,7 @@ public class MethodCallThroughputAnalysis14 extends Analysis {
private int numNoopFilters;
private List<TimestampObject> timestampObjects;
private Runnable runnable;
private final PipeFactory pipeFactory = PipeFactory.INSTANCE;
@Override
public void init() {
......@@ -73,18 +74,17 @@ public class MethodCallThroughputAnalysis14 extends Analysis {
pipeline.setFirstStage(objectProducer);
pipeline.setLastStage(collectorSink);
PipeFactory pipeFactory = new PipeFactory();
IPipe<TimestampObject> pipe = pipeFactory.create(ThreadCommunication.INTRA);
IPipe<TimestampObject> pipe = this.pipeFactory.create(ThreadCommunication.INTRA);
pipe.connectPorts(objectProducer.getOutputPort(), startTimestampFilter.getInputPort());
pipe = pipeFactory.create(ThreadCommunication.INTRA);
pipe = this.pipeFactory.create(ThreadCommunication.INTRA);
pipe.connectPorts(startTimestampFilter.getOutputPort(), noopFilters[0].getInputPort());
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 = pipeFactory.create(ThreadCommunication.INTRA);
pipe = this.pipeFactory.create(ThreadCommunication.INTRA);
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());
return pipeline;
......
......@@ -54,7 +54,7 @@ public class MethodCallThroughputAnalysis17 extends Analysis {
private ConstructorClosure<TimestampObject> inputObjectCreator;
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 Thread producerThread;
......
......@@ -40,11 +40,7 @@ import kieker.common.record.IMonitoringRecord;
public class RecordReaderConfiguration extends Configuration {
private final List<IMonitoringRecord> elementCollection = new LinkedList<IMonitoringRecord>();
private final PipeFactory pipeFactory;
public RecordReaderConfiguration() {
this.pipeFactory = new PipeFactory();
}
private final PipeFactory pipeFactory = PipeFactory.INSTANCE;
public void buildConfiguration() {
HeadPipeline<?, ?> producerPipeline = this.buildProducerPipeline();
......
......@@ -21,6 +21,8 @@ import teetime.variant.methodcallWithPorts.stage.basic.Sink;
public class ConnectionTypeTest {
private final PipeFactory pipeFactory = PipeFactory.INSTANCE;
// tests for load-time validation
@SuppressWarnings({ "unchecked", "rawtypes" })
......@@ -44,13 +46,11 @@ public class ConnectionTypeTest {
StopTimestampFilter stopTimestampFilter = StopTimestampFilter.class.newInstance();
Sink sink = Sink.class.newInstance();
PipeFactory pipeFactory = new PipeFactory();
IPipe pipe = pipeFactory.create(ThreadCommunication.INTRA);
IPipe pipe = this.pipeFactory.create(ThreadCommunication.INTRA);
pipe.connectPorts(objectProducer.getOutputPort(), startTimestampFilter.getInputPort());
pipe = pipeFactory.create(ThreadCommunication.INTRA);
pipe = this.pipeFactory.create(ThreadCommunication.INTRA);
pipe.connectPorts(startTimestampFilter.getOutputPort(), stopTimestampFilter.getInputPort());
pipe = pipeFactory.create(ThreadCommunication.INTRA);
pipe = this.pipeFactory.create(ThreadCommunication.INTRA);
pipe.connectPorts(stopTimestampFilter.getOutputPort(), sink.getInputPort());
// TypeVariable<Class<ObjectProducer>>[] objectProducerTypeParameters = ObjectProducer.class.getTypeParameters();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment