use of org.spf4j.base.avro.Method in project spf4j by zolyfarkas.
the class Converter method convert.
@Nullable
public static SampleNode convert(final Iterator<StackSampleElement> samples) {
TIntObjectMap<SampleNode> index = new TIntObjectHashMap<>();
while (samples.hasNext()) {
StackSampleElement asmp = samples.next();
SampleNode sn = new SampleNode(asmp.getCount());
SampleNode parent = index.get(asmp.getParentId());
if (parent != null) {
Method m = asmp.getMethod();
parent.put(m, sn);
}
index.put(asmp.getId(), sn);
}
return index.get(0);
}
use of org.spf4j.base.avro.Method in project spf4j by zolyfarkas.
the class Converter method loadSamples.
// it's a private method, don't care about being generic
@SuppressFBWarnings("OCP_OVERLY_CONCRETE_PARAMETER")
private static TIntObjectMap<SampleNode> loadSamples(final Decoder decoder, final StackSampleElement pasmp, final SpecificDatumReader<StackSampleElement> reader) throws IOException {
TIntObjectMap<SampleNode> index = new TIntObjectHashMap<>();
long nrArrayItems = decoder.readArrayStart();
while (nrArrayItems > 0) {
for (int j = 0; j < nrArrayItems; j++) {
StackSampleElement asmp = reader.read(pasmp, decoder);
SampleNode sn = new SampleNode(asmp.getCount());
SampleNode parent = index.get(asmp.getParentId());
if (parent != null) {
Method readMethod = asmp.getMethod();
Method m = new Method(readMethod.getDeclaringClass(), readMethod.getName());
parent.put(m, sn);
}
index.put(asmp.getId(), sn);
}
nrArrayItems = decoder.arrayNext();
}
return index;
}
use of org.spf4j.base.avro.Method in project spf4j by zolyfarkas.
the class SampleNode method filteredBy.
/**
* creates a copy filtered by predicate.
* @param predicate
* @return
*/
@Nullable
public SampleNode filteredBy(final Predicate<Method> predicate) {
int newCount = this.sampleCount;
SampleNode result = new SampleNode(0);
for (Map.Entry<Method, SampleNode> entry : this.entrySet()) {
Method method = entry.getKey();
SampleNode sn = entry.getValue();
if (predicate.test(method)) {
newCount -= sn.getSampleCount();
} else {
SampleNode sn2 = sn.filteredBy(predicate);
if (sn2 == null) {
newCount -= sn.getSampleCount();
} else {
newCount -= sn.getSampleCount() - sn2.getSampleCount();
result.put(method, sn2);
}
}
}
if (newCount == 0) {
return null;
} else if (newCount < 0) {
throw new IllegalStateException("child sample counts must be <= parent sample count, detail: " + this);
} else {
result.sampleCount = newCount;
return result;
}
}
use of org.spf4j.base.avro.Method in project spf4j by zolyfarkas.
the class SampleNode method parse.
public static Pair<Method, SampleNode> parse(@WillNotClose final Reader r) throws IOException {
JsonParser jsonP = Json.FACTORY.createParser(r);
consume(jsonP, JsonToken.START_OBJECT);
MutableHolder<Method> method = MutableHolder.of(null);
MutableHolder<SampleNode> samples = MutableHolder.of((SampleNode) null);
parse(jsonP, (m, s) -> {
method.setValue(m);
samples.setValue(s);
});
return Pair.of(method.get(), samples.get());
}
use of org.spf4j.base.avro.Method in project spf4j by zolyfarkas.
the class MethodMap method equals.
/**
* equals is used for both keys and values.
*/
@Override
protected boolean equals(final Object notnull, final Object two) {
if (notnull == two) {
return true;
}
if (two == null) {
return false;
}
Class<? extends Object> fClass = notnull.getClass();
if (fClass != two.getClass()) {
return false;
}
if (fClass == Method.class) {
Method m1 = (Method) notnull;
Method m2 = (Method) two;
return m1.getName().equals(m2.getName()) && m1.getDeclaringClass().equals(m2.getDeclaringClass());
} else {
return notnull.equals(two);
}
}
Aggregations