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

added DirWith*2RecordFilter

parent dd5db741
Branches
Tags
No related merge requests found
-a pipeline needs to be a stage, too, to allow the composition of stages
-instead of using work-stealing, sort the input in desc order to process the most computationally intensive elements first (load-balancing)
-for a novice programmer, it is difficult to select the best choice and combination of patterns to maximize performance
-switch vs. farm:
-switch: different branch logics
-farm: same branch logics
-if executed send() method, execute the corresponding successor stage at once to avoid scheduling, i.e., waste of performance
-same thread: send = put to pipe & execute corresponding successor stage
-different thread: send = put to pipe (only)
-
\ No newline at end of file
......@@ -38,14 +38,14 @@ import kieker.common.util.filesystem.FSUtil;
*
* @since 1.10
*/
public class File2RecordFilter extends Pipeline<File, IMonitoringRecord> {
public class Dir2RecordFilter extends Pipeline<File, IMonitoringRecord> {
private ClassNameRegistryRepository classNameRegistryRepository;
/**
* @since 1.10
*/
public File2RecordFilter(final ClassNameRegistryRepository classNameRegistryRepository) {
public Dir2RecordFilter(final ClassNameRegistryRepository classNameRegistryRepository) {
this.classNameRegistryRepository = classNameRegistryRepository;
// FIXME does not yet work with more than one thread due to classNameRegistryRepository: classNameRegistryRepository is set after the ctor
......@@ -91,7 +91,7 @@ public class File2RecordFilter extends Pipeline<File, IMonitoringRecord> {
/**
* @since 1.10
*/
public File2RecordFilter() {
public Dir2RecordFilter() {
this(null);
}
......
package teetime.variant.methodcallWithPorts.stage.kieker;
import java.io.File;
import teetime.variant.methodcallWithPorts.framework.core.Pipeline;
import teetime.variant.methodcallWithPorts.stage.io.Directory2FilesFilter;
import teetime.variant.methodcallWithPorts.stage.kieker.className.ClassNameRegistryCreationFilter;
import teetime.variant.methodcallWithPorts.stage.kieker.className.ClassNameRegistryRepository;
import teetime.variant.methodcallWithPorts.stage.kieker.fileToRecord.BinaryFile2RecordFilter;
import kieker.common.record.IMonitoringRecord;
public class DirWithBin2RecordFilter extends Pipeline<File, IMonitoringRecord> {
private ClassNameRegistryRepository classNameRegistryRepository;
public DirWithBin2RecordFilter(final ClassNameRegistryRepository classNameRegistryRepository) {
this.classNameRegistryRepository = classNameRegistryRepository;
final ClassNameRegistryCreationFilter classNameRegistryCreationFilter = new ClassNameRegistryCreationFilter(classNameRegistryRepository);
final Directory2FilesFilter directory2FilesFilter = new Directory2FilesFilter();
final BinaryFile2RecordFilter binaryFile2RecordFilter = new BinaryFile2RecordFilter(classNameRegistryRepository);
this.setFirstStage(classNameRegistryCreationFilter);
this.addIntermediateStage(directory2FilesFilter);
this.setLastStage(binaryFile2RecordFilter);
}
public DirWithBin2RecordFilter() {
this(null);
}
public ClassNameRegistryRepository getClassNameRegistryRepository() {
return this.classNameRegistryRepository;
}
public void setClassNameRegistryRepository(final ClassNameRegistryRepository classNameRegistryRepository) {
this.classNameRegistryRepository = classNameRegistryRepository;
}
}
package teetime.variant.methodcallWithPorts.stage.kieker;
import java.io.File;
import teetime.variant.methodcallWithPorts.framework.core.Pipeline;
import teetime.variant.methodcallWithPorts.stage.io.Directory2FilesFilter;
import teetime.variant.methodcallWithPorts.stage.kieker.className.ClassNameRegistryCreationFilter;
import teetime.variant.methodcallWithPorts.stage.kieker.className.ClassNameRegistryRepository;
import teetime.variant.methodcallWithPorts.stage.kieker.fileToRecord.DatFile2RecordFilter;
import kieker.common.record.IMonitoringRecord;
public class DirWithDat2RecordFilter extends Pipeline<File, IMonitoringRecord> {
private ClassNameRegistryRepository classNameRegistryRepository;
public DirWithDat2RecordFilter(final ClassNameRegistryRepository classNameRegistryRepository) {
this.classNameRegistryRepository = classNameRegistryRepository;
final ClassNameRegistryCreationFilter classNameRegistryCreationFilter = new ClassNameRegistryCreationFilter(classNameRegistryRepository);
final Directory2FilesFilter directory2FilesFilter = new Directory2FilesFilter();
final DatFile2RecordFilter datFile2RecordFilter = new DatFile2RecordFilter(classNameRegistryRepository);
this.setFirstStage(classNameRegistryCreationFilter);
this.addIntermediateStage(directory2FilesFilter);
this.setLastStage(datFile2RecordFilter);
}
public DirWithDat2RecordFilter() {
this(null);
}
public ClassNameRegistryRepository getClassNameRegistryRepository() {
return this.classNameRegistryRepository;
}
public void setClassNameRegistryRepository(final ClassNameRegistryRepository classNameRegistryRepository) {
this.classNameRegistryRepository = classNameRegistryRepository;
}
}
......@@ -25,7 +25,7 @@ import teetime.variant.methodcallWithPorts.framework.core.RunnableStage;
import teetime.variant.methodcallWithPorts.framework.core.pipe.SingleElementPipe;
import teetime.variant.methodcallWithPorts.framework.core.pipe.SpScPipe;
import teetime.variant.methodcallWithPorts.stage.CollectorSink;
import teetime.variant.methodcallWithPorts.stage.kieker.File2RecordFilter;
import teetime.variant.methodcallWithPorts.stage.kieker.Dir2RecordFilter;
import teetime.variant.methodcallWithPorts.stage.kieker.className.ClassNameRegistryRepository;
import kieker.common.record.IMonitoringRecord;
......@@ -53,7 +53,7 @@ public class RecordReaderAnalysis extends Analysis {
private Pipeline<File, Object> buildProducerPipeline() {
this.classNameRegistryRepository = new ClassNameRegistryRepository();
// create stages
File2RecordFilter file2RecordFilter = new File2RecordFilter(this.classNameRegistryRepository);
Dir2RecordFilter file2RecordFilter = new Dir2RecordFilter(this.classNameRegistryRepository);
CollectorSink<IMonitoringRecord> collector = new CollectorSink<IMonitoringRecord>(this.elementCollection);
final Pipeline<File, Object> pipeline = new Pipeline<File, Object>();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment