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

made PipeFactory singleton

parent aaf821c6
Branches
Tags
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.
Please register or to comment