Search in sources :

Example 16 with Method

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);
}
Also used : TIntObjectHashMap(gnu.trove.map.hash.TIntObjectHashMap) SampleNode(org.spf4j.stackmonitor.SampleNode) Method(org.spf4j.base.avro.Method) StackSampleElement(org.spf4j.base.avro.StackSampleElement) Nullable(javax.annotation.Nullable)

Example 17 with Method

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;
}
Also used : TIntObjectHashMap(gnu.trove.map.hash.TIntObjectHashMap) SampleNode(org.spf4j.stackmonitor.SampleNode) Method(org.spf4j.base.avro.Method) StackSampleElement(org.spf4j.base.avro.StackSampleElement) SuppressFBWarnings(edu.umd.cs.findbugs.annotations.SuppressFBWarnings)

Example 18 with Method

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;
    }
}
Also used : Method(org.spf4j.base.avro.Method) TMap(gnu.trove.map.TMap) Map(java.util.Map) Nullable(javax.annotation.Nullable)

Example 19 with Method

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());
}
Also used : Method(org.spf4j.base.avro.Method) JsonParser(com.fasterxml.jackson.core.JsonParser)

Example 20 with Method

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);
    }
}
Also used : Method(org.spf4j.base.avro.Method)

Aggregations

Method (org.spf4j.base.avro.Method)29 Test (org.junit.Test)8 SampleNode (org.spf4j.stackmonitor.SampleNode)8 SuppressFBWarnings (edu.umd.cs.findbugs.annotations.SuppressFBWarnings)6 Map (java.util.Map)5 TMap (gnu.trove.map.TMap)3 IOException (java.io.IOException)3 Pair (org.spf4j.base.Pair)3 JsonParser (com.fasterxml.jackson.core.JsonParser)2 TIntObjectHashMap (gnu.trove.map.hash.TIntObjectHashMap)2 Point (java.awt.Point)2 BufferedReader (java.io.BufferedReader)2 StringReader (java.io.StringReader)2 UncheckedIOException (java.io.UncheckedIOException)2 Nullable (javax.annotation.Nullable)2 StackSampleElement (org.spf4j.base.avro.StackSampleElement)2 AvroStackSampleSupplier (org.spf4j.stackmonitor.AvroStackSampleSupplier)2 JsonParseException (com.fasterxml.jackson.core.JsonParseException)1 JsonToken (com.fasterxml.jackson.core.JsonToken)1 Clipboard (java.awt.datatransfer.Clipboard)1