/* * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ package org.graalvm.compiler.salver.dumper; import java.io.IOException; import org.graalvm.compiler.salver.Salver; import org.graalvm.compiler.salver.data.DataDict; public class AbstractGraalDumper extends AbstractSerializerDumper { public static final String EVENT_NAMESPACE = "graal"; private int eventCounter; public void beginDump() throws IOException { beginDump(EVENT_NAMESPACE); } protected void beginDump(String namespace) throws IOException { beginDump(namespace, getBeginDumpDataDict()); } protected void beginDump(String namespace, DataDict dataDict) throws IOException { DataDict eventDict = createEventDict(":begin"); eventDict.put("@time", System.currentTimeMillis()); eventDict.put("@ecid", Salver.ECID); if (namespace != null) { eventDict.put("@namespace", namespace); } if (dataDict != null) { eventDict.put("@data", dataDict); } serializeAndFlush(eventDict); } protected DataDict getBeginDumpDataDict() { DataDict dataDict = new DataDict(); dataDict.put("dumper", getClass().getSimpleName()); dataDict.put("thread", Thread.currentThread().getName()); return dataDict; } public void endDump() throws IOException { DataDict eventDict = createEventDict(":end"); eventDict.put("@time", System.currentTimeMillis()); serializeAndFlush(eventDict); } @Override public void close() throws IOException { endDump(); } protected DataDict createEventDict(String name) { DataDict eventDict = new DataDict(); eventDict.put("@event", name); eventDict.put("@n", eventCounter++); return eventDict; } protected DataDict createEventDict(String name, DataDict data) { DataDict eventDict = createEventDict(name); eventDict.put("@data", data); return eventDict; } }