All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.mat.hprof.IHprofParserHandler Maven / Gradle / Ivy

The newest version!
/*******************************************************************************
 * Copyright (c) 2008 SAP AG.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    SAP AG - initial API and implementation
 *******************************************************************************/
package org.eclipse.mat.hprof;

import java.io.IOException;
import java.util.List;

import org.eclipse.mat.SnapshotException;
import org.eclipse.mat.collect.ArrayLong;
import org.eclipse.mat.collect.HashMapLongObject;
import org.eclipse.mat.parser.IPreliminaryIndex;
import org.eclipse.mat.parser.index.IIndexReader.IOne2LongIndex;
import org.eclipse.mat.parser.model.ClassImpl;
import org.eclipse.mat.parser.model.XSnapshotInfo;
import org.eclipse.mat.snapshot.model.IClass;
import org.eclipse.mat.util.IProgressListener;

public interface IHprofParserHandler {
    String IDENTIFIER_SIZE = "ID_SIZE"; //$NON-NLS-1$
    String CREATION_DATE = "CREATION_DATE"; //$NON-NLS-1$
    String VERSION = "VERSION";//$NON-NLS-1$

    public class HeapObject {
        public int objectId;
        public long objectAddress;
        public ClassImpl clazz;
        public int usedHeapSize;
        public ArrayLong references = new ArrayLong();
        public boolean isArray = false;

        public HeapObject(int objectId, long objectAddress, ClassImpl clazz, int usedHeapSize) {
            super();
            this.objectId = objectId;
            this.objectAddress = objectAddress;
            this.clazz = clazz;
            this.usedHeapSize = usedHeapSize;
            this.isArray = false;
        }
    }

    // //////////////////////////////////////////////////////////////
    // lifecycle
    // //////////////////////////////////////////////////////////////

    void beforePass1(XSnapshotInfo snapshotInfo) throws IOException;

    void beforePass2(IProgressListener monitor) throws IOException, SnapshotException;

    IOne2LongIndex fillIn(IPreliminaryIndex index) throws IOException;

    void cancel();

    // //////////////////////////////////////////////////////////////
    // report parsed entities
    // //////////////////////////////////////////////////////////////

    void addProperty(String name, String value) throws IOException;

    void addGCRoot(long id, long referrer, int rootType) throws IOException;

    void addClass(ClassImpl clazz, long filePosition) throws IOException;

    void addObject(HeapObject object, long filePosition) throws IOException;

    void reportInstance(long id, long filePosition);

    void reportRequiredObjectArray(long arrayClassID);

    void reportRequiredPrimitiveArray(int arrayType);

    // //////////////////////////////////////////////////////////////
    // lookup heap infos
    // //////////////////////////////////////////////////////////////

    int getIdentifierSize();

    HashMapLongObject getConstantPool();

    IClass lookupClass(long classId);

    IClass lookupClassByName(String name, boolean failOnMultipleInstances);

    IClass lookupClassByIndex(int objIndex);

    List resolveClassHierarchy(long classId);

    int mapAddressToId(long address);

    XSnapshotInfo getSnapshotInfo();
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy