package org.sef4j.callstack.stats.helpers;
import java.util.function.Predicate;
import org.sef4j.callstack.stats.BasicTimeStatsLogHistogram;
import org.sef4j.callstack.stats.PerfStats;
public class PerfStatsPredicates {
public static class MinPendingCountPredicate implements Predicate<PerfStats> {
public static final MinPendingCountPredicate INSTANCE = new MinPendingCountPredicate(0);
private final int minCount;
public MinPendingCountPredicate(int minCount) {
this.minCount = minCount;
}
@Override
public boolean test(PerfStats src) {
return src.getPendingCounts().getPendingCount() > minCount;
}
}
public static class ElapsedTimeDelegatePerfStatsPredicate implements Predicate<PerfStats> {
private final Predicate<BasicTimeStatsLogHistogram> delegate;
public ElapsedTimeDelegatePerfStatsPredicate(Predicate<BasicTimeStatsLogHistogram> delegate) {
this.delegate = delegate;
}
@Override
public boolean test(PerfStats src) {
return delegate.test(src.getElapsedTimeStats());
}
}
public static class ThreadUserTimeDelegatePerfStatsPredicate implements Predicate<PerfStats> {
private final Predicate<BasicTimeStatsLogHistogram> delegate;
public ThreadUserTimeDelegatePerfStatsPredicate(Predicate<BasicTimeStatsLogHistogram> delegate) {
this.delegate = delegate;
}
@Override
public boolean test(PerfStats src) {
return delegate.test(src.getThreadUserTimeStats());
}
}
public static class ThreadCpuTimeDelegatePerfStatsPredicate implements Predicate<PerfStats> {
private final Predicate<BasicTimeStatsLogHistogram> delegate;
public ThreadCpuTimeDelegatePerfStatsPredicate(Predicate<BasicTimeStatsLogHistogram> delegate) {
this.delegate = delegate;
}
@Override
public boolean test(PerfStats src) {
return delegate.test(src.getThreadCpuTimeStats());
}
}
}