package eu.play_project.dcep.distributedetalis.measurement.fsm;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import eu.play_project.dcep.api.measurement.NodeMeasurementResult;
import eu.play_project.dcep.distributedetalis.measurement.MeasurementUnit;
import fr.inria.eventcloud.api.CompoundEvent;
public class WaitForMeasuredData implements MeasurementState{
private MeasurementUnit context;
private Logger logger;
private int numberOfProducedEvents;
private int numberOfConsumedEvents;
public WaitForMeasuredData(MeasurementUnit context){
this.logger = LoggerFactory.getLogger(WaitForMeasuredData.class);
this.context = context;
}
@Override
public void eventReceived() {
numberOfConsumedEvents++;
}
@Override
public NodeMeasurementResult getMeasuringResults() {
return null;
}
@Override
public void startMeasurement(int period) {
}
@Override
public void setMeasuredData(NodeMeasurementResult measuredValues) {
logger.debug("Measured data set.");
logger.info("" + measuredValues.getProcessingTimeForOneEvent());
logger.info("" + measuredValues.getNumberOfEtalisInputEvents());
logger.info(measuredValues.getName());
//Set number of consumed and produced events.
context.setNumberOfOutputEvents(context.getNumberOfOutputEvents()+numberOfProducedEvents);
context.setNumberOfInputEvents(context.getNumberOfInputEvents() + numberOfConsumedEvents);
context.setState( context.createMeasurementState("MeasurementFinished"));
}
@Override
public void eventProduced(CompoundEvent event, String patternId) {
numberOfProducedEvents++;
}
@Override
public String getName() {
return "WaitForMeasuredData";
}
@Override
public void sendMeasuringEvent() {
}
@Override
public void measuringPeriodIsUp() {
}
}