package org.gridkit.jvmtool.stacktrace.analytics;
import org.gridkit.jvmtool.stacktrace.ThreadSnapshot;
class FilterAggregatorFactory implements ThreadDumpAggregator, ThreadDumpAggregatorFactory {
private final ThreadSnapshotFilter filter;
private long total;
private long matched;
public FilterAggregatorFactory(ThreadSnapshotFilter filter) {
this.filter = filter;
}
@Override
public ThreadDumpAggregator newInstance() {
return new FilterAggregatorFactory(filter);
}
@Override
public void aggregate(ThreadSnapshot threadInfo) {
total++;
if (filter.evaluate(threadInfo)) {
matched++;
}
}
@Override
public Object info() {
return ((double)matched) / total;
}
}