package com.insightfullogic.honest_profiler.framework; import static java.util.Arrays.asList; import com.insightfullogic.honest_profiler.core.collector.lean.LeanLogCollector; import com.insightfullogic.honest_profiler.core.parser.LogEvent; import com.insightfullogic.honest_profiler.core.parser.Method; import com.insightfullogic.honest_profiler.core.parser.StackFrame; import com.insightfullogic.honest_profiler.core.parser.ThreadMeta; import com.insightfullogic.honest_profiler.core.parser.TraceStart; import com.insightfullogic.honest_profiler.core.profiles.lean.LeanProfile; import com.insightfullogic.honest_profiler.core.profiles.lean.LeanProfileListener; public abstract class LeanLogCollectorDriver implements LeanProfileListener { // Instance Properties private LeanLogCollector collector; // LeanProfileListener Implementation @Override public abstract void accept(LeanProfile newProfile); // Initialization public void resetAndRequest() { reset(); collector.requestProfile(); } public void reset() { collector = new LeanLogCollector(this); } // Delegation for LogCollector public void requestProfile() { collector.requestProfile(); } public void handle(TraceStart... traceStarts) { asList(traceStarts).forEach(collector::handle); } public void handle(StackFrame... stackFrames) { asList(stackFrames).forEach(collector::handle); } public void handle(Method... methods) { asList(methods).forEach(collector::handle); } public void handle(ThreadMeta... threadMetas) { asList(threadMetas).forEach(collector::handle); } public void handle(LogEvent... events) { asList(events).forEach(event -> { if (event instanceof TraceStart) { handle((TraceStart)event); } else if (event instanceof StackFrame) { handle((StackFrame)event); } else if (event instanceof Method) { handle((Method)event); } else if (event instanceof ThreadMeta) { handle((ThreadMeta)event); } }); } public void endOfLog() { collector.endOfLog(); } }