package org.sef4j.callstack.stats.dto;
import org.sef4j.callstack.stats.PerfStats;
import org.sef4j.core.util.ICopySupport;
/**
* DTO class for PerfStats
*/
public final class PerfStatsDTO implements ICopySupport<PerfStatsDTO> {
private PendingPerfCountDTO pendingCounts = new PendingPerfCountDTO();
private CumulatedBasicTimeStatsLogHistogramDTO elapsedTimeStats = new CumulatedBasicTimeStatsLogHistogramDTO();
private CumulatedBasicTimeStatsLogHistogramDTO threadUserTimeStats = new CumulatedBasicTimeStatsLogHistogramDTO();
private CumulatedBasicTimeStatsLogHistogramDTO threadCpuTimeStats = new CumulatedBasicTimeStatsLogHistogramDTO();
// ------------------------------------------------------------------------
public PerfStatsDTO() {
}
public PerfStatsDTO(PerfStatsDTO src) {
set(src);
}
public PerfStatsDTO(PerfStats src) {
incr(src);
}
// ------------------------------------------------------------------------
public PendingPerfCountDTO getPendingCounts() {
return pendingCounts;
}
public CumulatedBasicTimeStatsLogHistogramDTO getElapsedTimeStats() {
return elapsedTimeStats;
}
public CumulatedBasicTimeStatsLogHistogramDTO getThreadUserTimeStats() {
return threadUserTimeStats;
}
public CumulatedBasicTimeStatsLogHistogramDTO getThreadCpuTimeStats() {
return threadCpuTimeStats;
}
public int getPendingCount() {
return pendingCounts.getPendingCount();
}
public long getPendingSumStartTime() {
return pendingCounts.getPendingSumStartTime();
}
public void set(PerfStatsDTO src) {
elapsedTimeStats.set(src.elapsedTimeStats);
threadUserTimeStats.set(src.threadUserTimeStats);
threadCpuTimeStats.set(src.threadCpuTimeStats);
pendingCounts.set(src.pendingCounts);
}
public void incr(PerfStats src) {
elapsedTimeStats.incr(src.getElapsedTimeStats());
threadUserTimeStats.incr(src.getThreadUserTimeStats());
threadCpuTimeStats.incr(src.getThreadCpuTimeStats());
pendingCounts.incr(src.getPendingCounts());
}
@Override /* java.lang.Object */
public PerfStatsDTO clone() {
return copy();
}
@Override /* ICopySupport<> */
public PerfStatsDTO copy() {
return new PerfStatsDTO(this);
}
// ------------------------------------------------------------------------
@Override
public String toString() {
int pendingCount = pendingCounts.getPendingCount();
return "PerfStats ["
+ ((pendingCount != 0)? ", pending:" + pendingCount : "")
+ "count:" + elapsedTimeStats.totalCount()
+ ", sum ms elapsed: " + elapsedTimeStats.totalSum()
+ ", cpu:" + threadCpuTimeStats.totalSum()
+ ", user:" + threadUserTimeStats.totalSum()
+ "]";
}
}