package rocks.inspectit.agent.java.sensor.method.timer;
import java.sql.Timestamp;
import java.util.List;
import rocks.inspectit.shared.all.communication.DefaultData;
import rocks.inspectit.shared.all.communication.data.ParameterContentData;
import rocks.inspectit.shared.all.communication.data.TimerData;
/**
* The optimized timer storage instantly computes the new values and saves them in the
* {@link TimerData}.
*
* @author Patrice Bouillet
*
*/
public class OptimizedTimerStorage implements ITimerStorage {
/**
* The used {@link TimerData}.
*/
private TimerData timerData;
/**
* Default constructor which initializes a {@link TimerData} object.
*
* @param timeStamp
* The time stamp.
* @param platformIdent
* The platform ID.
* @param sensorTypeIdent
* The sensor type ID.
* @param methodIdent
* The method ID.
* @param parameterContentData
* The content of the parameter/fields.
* @param charting
* If TimerData's charting should be set or not.
*/
public OptimizedTimerStorage(Timestamp timeStamp, long platformIdent, long sensorTypeIdent, long methodIdent, List<ParameterContentData> parameterContentData, boolean charting) {
timerData = new TimerData(timeStamp, platformIdent, sensorTypeIdent, methodIdent, parameterContentData);
timerData.setCharting(charting);
}
/**
* {@inheritDoc}
*/
@Override
public void addData(double time, double cpuTime) {
timerData.increaseCount();
timerData.addDuration(time);
timerData.calculateMax(time);
timerData.calculateMin(time);
// only add the cpu time if it greater than zero
if (cpuTime >= 0) {
timerData.addCpuDuration(cpuTime);
timerData.calculateCpuMax(cpuTime);
timerData.calculateCpuMin(cpuTime);
}
}
/**
* {@inheritDoc}
*/
@Override
public DefaultData finalizeDataObject() {
// processing is done during data adding, so nothing to do here.
return timerData;
}
}