package uk.ac.imperial.lsds.seepworker.core;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import uk.ac.imperial.lsds.seep.api.SeepTask;
import uk.ac.imperial.lsds.seep.api.state.SeepState;
import uk.ac.imperial.lsds.seepworker.WorkerConfig;
import uk.ac.imperial.lsds.seepworker.core.Conductor.ConductorCallback;
import uk.ac.imperial.lsds.seepworker.core.input.CoreInput;
import uk.ac.imperial.lsds.seepworker.core.output.CoreOutput;
public class ProcessingEngineFactory {
final private static Logger LOG = LoggerFactory.getLogger(ProcessingEngineFactory.class.getName());
public static ProcessingEngine buildSingleTaskProcessingEngine(WorkerConfig wc, int id, SeepTask task, SeepState state, CoreInput coreInput, CoreOutput coreOutput, ConductorCallback callback){
int engineType = wc.getInt(WorkerConfig.ENGINE_TYPE);
if(engineType == ProcessingEngineType.SINGLE_THREAD.ofType()){
LOG.info("Building processing engine of type: {}", "SINGLE_THREAD");
return new SingleThreadProcessingEngine(wc, id, task, state, coreInput, coreOutput, callback);
}
return null;
}
public static ProcessingEngine buildComposedTaskProcessingEngine(WorkerConfig wc, int id, SeepTask task, SeepState state, CoreInput coreInput, CoreOutput coreOutput, ConductorCallback callback) {
int engineType = wc.getInt(WorkerConfig.ENGINE_TYPE);
if(engineType == ProcessingEngineType.SINGLE_THREAD.ofType()) {
LOG.info("Building processing engine of type: {}", "SINGLE_THREAD");
return new SingleThreadProcessingEngine(wc, id, task, state, coreInput, coreOutput, callback);
}
return null;
}
}