package eu.play_project.dcep.distributedetalis.measurement.fsm; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import eu.play_project.dcep.api.measurement.MeasurementResult; import eu.play_project.dcep.api.measurement.NodeMeasurementResult; import eu.play_project.dcep.distributedetalis.PlayJplEngineWrapper; import eu.play_project.dcep.distributedetalis.measurement.MeasurementThread; import eu.play_project.dcep.distributedetalis.measurement.MeasurementUnit; import eu.play_project.dcep.distributedetalis.measurement.MeasuringThreadFactory; import fr.inria.eventcloud.api.CompoundEvent; public class Ready implements MeasurementState{ private ExecutorService measureExecutor; private PlayJplEngineWrapper prologContext; private MeasurementUnit context; private Logger logger; public Ready(PlayJplEngineWrapper ctx, MeasurementUnit context){ // Generate ThreadPool for Measurement tasks. measureExecutor = Executors.newCachedThreadPool(); measureExecutor = Executors.newSingleThreadExecutor(new MeasuringThreadFactory()); this.context = context; this.prologContext = ctx; this.logger = LoggerFactory.getLogger(Ready.class); } @Override public void startMeasurement(int time) { logger.info("Start measuremnt."); MeasurementThread task = new MeasurementThread(time, prologContext, context); Future<MeasurementResult> future = measureExecutor.submit(task); context.setState(context.createMeasurementState("MeasureProcessingTime")); } @Override public void eventReceived() { //Reflexive edge. } @Override public NodeMeasurementResult getMeasuringResults() { return null; //Reflexive edge. } @Override public void setMeasuredData(NodeMeasurementResult measuredValues) { } @Override public void eventProduced(CompoundEvent event, String patternId) { } @Override public String getName() { return "Ready"; } @Override public void sendMeasuringEvent() { } @Override public void measuringPeriodIsUp() { } }