package com.jetbrains.actionscript.profiler.model;
import com.jetbrains.actionscript.profiler.sampler.CreateObjectSample;
import com.jetbrains.actionscript.profiler.sampler.DeleteObjectSample;
import com.jetbrains.actionscript.profiler.sampler.ObjectSampleHandler;
import com.jetbrains.actionscript.profiler.sampler.Sample;
import org.jetbrains.annotations.Nullable;
import java.util.LinkedHashSet;
import java.util.Set;
public class ProfilerDataConsumer {
private final ProfileData profileData = new ProfileData();
@Nullable private final ObjectSampleHandler objectSampleHandler;
public ProfilerDataConsumer(@Nullable ObjectSampleHandler objectSampleHandler) {
this.objectSampleHandler = objectSampleHandler;
}
public ProfileData getProfileData() {
return profileData;
}
public void process(Sample sample) {
if (sample instanceof CreateObjectSample) {
final CreateObjectSample createObjectSample = (CreateObjectSample)sample;
profileData.putNewObject(createObjectSample.id, createObjectSample);
if (objectSampleHandler != null) {
objectSampleHandler.processCreateSample(createObjectSample);
}
}
else if (sample instanceof DeleteObjectSample) {
DeleteObjectSample deleteObjectSample = (DeleteObjectSample)sample;
profileData.removeObject(deleteObjectSample.id);
if (objectSampleHandler != null) {
objectSampleHandler.processDeleteSample(deleteObjectSample);
}
}
else {
profileData.addPerformanceSample(sample);
}
}
public void referenced(int pid, int id) {
Set<Integer> integers = profileData.getReferences().get(pid);
if (integers == null) {
integers = new LinkedHashSet<>(3);
profileData.getReferences().put(pid, integers);
}
integers.add(id);
}
public void resetCpuUsageData() {
profileData.clearPerformance();
}
}