--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2015 EfficiOS Inc., Alexandre Montplaisir
+ *
+ * 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
+ *******************************************************************************/
+
+package org.eclipse.tracecompass.tmf.ctf.core.trace;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
+
+/**
+ * Utility methods for traces in the CTF format.
+ *
+ * @author Alexandre Montplaisir
+ * @since 2.0
+ */
+@NonNullByDefault
+public final class CtfUtils {
+
+ private CtfUtils() {
+ }
+
+ /**
+ * Convenience method to get the tracer name from the trace's metadata. The
+ * leading and trailing "" will be stripped from the returned string.
+ *
+ * @param trace
+ * The trace to query
+ * @return The tracer's name, or null if it is not defined in the metadata.
+ */
+ public static @Nullable String getTracerName(CtfTmfTrace trace) {
+ String str = trace.getEnvironment().get("tracer_name"); //$NON-NLS-1$
+ if (str == null) {
+ return null;
+ }
+ /* Remove the "" at the start and end of the string */
+ return str.replaceAll("^\"|\"$", ""); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * Convenience method to get the tracer's major version from the trace
+ * metadata.
+ *
+ * @param trace
+ * The trace to query
+ * @return The tracer's major version, or -1 if it is not defined.
+ */
+ public static int getTracerMajorVersion(CtfTmfTrace trace) {
+ String str = trace.getEnvironment().get("tracer_major"); //$NON-NLS-1$
+ if (str == null) {
+ return -1;
+ }
+ try {
+ int ret = Integer.parseInt(str);
+ return ret;
+ } catch (NumberFormatException e) {
+ return -1;
+ }
+ }
+
+ /**
+ * Convenience method to get the tracer's minor version from the trace
+ * metadata.
+ *
+ * @param trace
+ * The trace to query
+ * @return The tracer's minor version, or -1 if it is not defined.
+ */
+ public static int getTracerMinorVersion(CtfTmfTrace trace) {
+ String str = trace.getEnvironment().get("tracer_minor"); //$NON-NLS-1$
+ if (str == null) {
+ return -1;
+ }
+ try {
+ int ret = Integer.parseInt(str);
+ return ret;
+ } catch (NumberFormatException e) {
+ return -1;
+ }
+ }
+}
import org.eclipse.tracecompass.tmf.core.trace.TraceValidationStatus;
import org.eclipse.tracecompass.tmf.ctf.core.trace.CtfTmfTrace;
import org.eclipse.tracecompass.tmf.ctf.core.trace.CtfTraceValidationStatus;
+import org.eclipse.tracecompass.tmf.ctf.core.trace.CtfUtils;
import com.google.common.collect.ImmutableSet;
public void initTrace(IResource resource, String path,
Class<? extends ITmfEvent> eventType) throws TmfTraceException {
super.initTrace(resource, path, eventType);
- fOriginTracer = getTracerFromEnv(this.getEnvironment());
+ fOriginTracer = getTracerFromEnv();
}
/**
* Identify which tracer generated a trace from its metadata.
*/
- private static OriginTracer getTracerFromEnv(Map<String, String> traceEnv) {
- String tracerName = traceEnv.get("tracer_name"); //$NON-NLS-1$
- String tracerMajor = traceEnv.get("tracer_major"); //$NON-NLS-1$
- String tracerMinor = traceEnv.get("tracer_minor"); //$NON-NLS-1$
+ private OriginTracer getTracerFromEnv() {
+ String tracerName = CtfUtils.getTracerName(this);
+ int tracerMajor = CtfUtils.getTracerMajorVersion(this);
+ int tracerMinor = CtfUtils.getTracerMinorVersion(this);
- if ("\"perf\"".equals(tracerName)) { //$NON-NLS-1$
+ if ("perf".equals(tracerName)) { //$NON-NLS-1$
return OriginTracer.PERF;
- } else if ("\"lttng-modules\"".equals(tracerName) && tracerMajor != null && tracerMinor != null) { //$NON-NLS-1$
+ } else if ("lttng-modules".equals(tracerName)) { //$NON-NLS-1$
/* Look for specific versions of LTTng */
- if (Integer.valueOf(tracerMajor) >= 2) {
- if (Integer.valueOf(tracerMinor) >= 7) {
+ if (tracerMajor >= 2) {
+ if (tracerMinor >= 7) {
return OriginTracer.LTTNG27;
- } else if (Integer.valueOf(tracerMinor) >= 6) {
+ } else if (tracerMinor >= 6) {
return OriginTracer.LTTNG26;
}
}
import org.eclipse.tracecompass.tmf.core.trace.TraceValidationStatus;
import org.eclipse.tracecompass.tmf.ctf.core.trace.CtfTmfTrace;
import org.eclipse.tracecompass.tmf.ctf.core.trace.CtfTraceValidationStatus;
+import org.eclipse.tracecompass.tmf.ctf.core.trace.CtfUtils;
/**
* Class to contain LTTng-UST traces
super.initTrace(resource, path, eventType);
/* Determine the event layout to use from the tracer's version */
- fLayout = getLayoutFromEnv(this.getEnvironment());
+ fLayout = getLayoutFromEnv();
}
- private static @NonNull ILttngUstEventLayout getLayoutFromEnv(Map<String, String> traceEnv) {
- String tracerName = traceEnv.get("tracer_name"); //$NON-NLS-1$
- String tracerMajor = traceEnv.get("tracer_major"); //$NON-NLS-1$
- String tracerMinor = traceEnv.get("tracer_minor"); //$NON-NLS-1$
+ private @NonNull ILttngUstEventLayout getLayoutFromEnv() {
+ String tracerName = CtfUtils.getTracerName(this);
+ int tracerMajor = CtfUtils.getTracerMajorVersion(this);
+ int tracerMinor = CtfUtils.getTracerMinorVersion(this);
- if ("\"lttng-ust\"".equals(tracerName) && tracerMajor != null && tracerMinor != null) { //$NON-NLS-1$
- if (Integer.valueOf(tracerMajor) >= 2) {
- if (Integer.valueOf(tracerMinor) >= 7) {
+ if ("lttng-ust".equals(tracerName)) { //$NON-NLS-1$
+ if (tracerMajor >= 2) {
+ if (tracerMinor >= 7) {
return LttngUst27EventLayout.getInstance();
}
return LttngUst20EventLayout.getInstance();