tmf: Split the state system in a separate plugin
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng2.kernel.ui / src / org / eclipse / linuxtools / internal / lttng2 / kernel / ui / views / controlflow / ControlFlowEntry.java
index 0576b633b9b472191f2252e4f92ae4b316d52ae1..598deee1c145dcbb75b4fec8f1962dcc8f791b68 100644 (file)
-/*******************************************************************************\r
- * Copyright (c) 2012 Ericsson\r
- * \r
- * All rights reserved. This program and the accompanying materials are\r
- * made available under the terms of the Eclipse Public License v1.0 which\r
- * accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- * \r
- * Contributors:\r
- *   Patrick Tasse - Initial API and implementation\r
- *******************************************************************************/\r
-\r
-package org.eclipse.linuxtools.internal.lttng2.kernel.ui.views.controlflow;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Iterator;\r
-import java.util.List;\r
-\r
-import org.eclipse.linuxtools.internal.lttng2.kernel.ui.views.common.EventIterator;\r
-import org.eclipse.linuxtools.lttng2.kernel.core.trace.CtfKernelTrace;\r
-import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.ITimeEvent;\r
-import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.ITimeGraphEntry;\r
-\r
-public class ControlFlowEntry implements ITimeGraphEntry, Comparable<ControlFlowEntry> {\r
-    private int fThreadQuark;\r
-    private CtfKernelTrace fTrace;\r
-    private ControlFlowEntry fParent = null;\r
-    private ArrayList<ControlFlowEntry> fChildren = new ArrayList<ControlFlowEntry>();\r
-    private String fName;\r
-    private int fThreadId;\r
-    private int fParentThreadId;\r
-    private long fBirthTime = -1;\r
-    private long fStartTime = -1;\r
-    private long fEndTime = -1;\r
-    private List<ITimeEvent> fEventList = new ArrayList<ITimeEvent>();\r
-    private List<ITimeEvent> fZoomedEventList = null;\r
-\r
-    public ControlFlowEntry(int threadQuark, CtfKernelTrace trace, String execName, int threadId, int parentThreadId, long birthTime, long startTime, long endTime) {\r
-        fThreadQuark = threadQuark;\r
-        fTrace = trace;\r
-        fName = execName;\r
-        fThreadId = threadId;\r
-        fParentThreadId = parentThreadId;\r
-        fBirthTime = birthTime;\r
-        fStartTime = startTime;\r
-        fEndTime = endTime;\r
-    }\r
-\r
-    @Override\r
-    public ITimeGraphEntry getParent() {\r
-        return fParent;\r
-    }\r
-\r
-    @Override\r
-    public boolean hasChildren() {\r
-        return fChildren != null && fChildren.size() > 0;\r
-    }\r
-\r
-    @Override\r
-    public ControlFlowEntry[] getChildren() {\r
-        return fChildren.toArray(new ControlFlowEntry[0]);\r
-    }\r
-\r
-    @Override\r
-    public String getName() {\r
-        return fName;\r
-    }\r
-\r
-    @Override\r
-    public long getStartTime() {\r
-        return fStartTime;\r
-    }\r
-\r
-    @Override\r
-    public long getEndTime() {\r
-        return fEndTime;\r
-    }\r
-\r
-    @Override\r
-    public boolean hasTimeEvents() {\r
-        return true;\r
-    }\r
-\r
-    @Override\r
-    public Iterator<ITimeEvent> getTimeEventsIterator() {\r
-        return new EventIterator(fEventList, fZoomedEventList);\r
-    }\r
-\r
-    @Override\r
-    public Iterator<ITimeEvent> getTimeEventsIterator(long startTime, long stopTime, long visibleDuration) {\r
-        return new EventIterator(fEventList, fZoomedEventList, startTime, stopTime);\r
-    }\r
-\r
-    @Override\r
-    public int compareTo(ControlFlowEntry other) {\r
-        int result = this.fThreadId < other.fThreadId ? -1 : this.fThreadId > other.fThreadId ? 1 : 0;\r
-        if (result == 0) {\r
-            result = this.fStartTime < other.fStartTime ? -1 : this.fStartTime > other.fStartTime ? 1 : 0;\r
-        }\r
-        return result;\r
-    }\r
-\r
-    public int getThreadQuark() {\r
-        return fThreadQuark;\r
-    }\r
-\r
-    public CtfKernelTrace getTrace() {\r
-        return fTrace;\r
-    }\r
-\r
-    public int getThreadId() {\r
-        return fThreadId;\r
-    }\r
-\r
-    public int getParentThreadId() {\r
-        return fParentThreadId;\r
-    }\r
-\r
-    public long getBirthTime() {\r
-        return fBirthTime;\r
-    }\r
-\r
-    public void addEvent(ITimeEvent event) {\r
-        long start = event.getTime();\r
-        long end = start + event.getDuration();\r
-        synchronized (fEventList) {\r
-            fEventList.add(event);\r
-            if (fStartTime == -1 || start < fStartTime) {\r
-                fStartTime = start;\r
-            }\r
-            if (fEndTime == -1 || end > fEndTime) {\r
-                fEndTime = end;\r
-            }\r
-        }\r
-    }\r
-\r
-    public void setEventList(List<ITimeEvent> eventList) {\r
-        fEventList = eventList;\r
-    }\r
-\r
-    public void setZoomedEventList(List<ITimeEvent> eventList) {\r
-        fZoomedEventList = eventList;\r
-    }\r
-\r
-    public void addChild(ControlFlowEntry child) {\r
-        child.fParent = this;\r
-        fChildren.add(child);\r
-    }\r
-}\r
+/*******************************************************************************
+ * Copyright (c) 2012, 2014 Ericsson, École Polytechnique de Montréal
+ *
+ * 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:
+ *   Patrick Tasse - Initial API and implementation
+ *   Geneviève Bastien - Move code to provide base classes for time graph view
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.internal.lttng2.kernel.ui.views.controlflow;
+
+import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
+import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.TimeGraphEntry;
+
+/**
+ * An entry in the Control Flow view
+ */
+public class ControlFlowEntry extends TimeGraphEntry {
+
+    private final ITmfTrace fTrace;
+    private final int fThreadId;
+    private final int fParentThreadId;
+    private final int fThreadQuark;
+
+    /**
+     * Constructor
+     *
+     * @param quark
+     *            The attribute quark matching the thread
+     * @param trace
+     *            The trace on which we are working
+     * @param execName
+     *            The exec_name of this entry
+     * @param threadId
+     *            The TID of the thread
+     * @param parentThreadId
+     *            the Parent_TID of this thread
+     * @param startTime
+     *            The start time of this process's lifetime
+     * @param endTime
+     *            The end time of this process
+     */
+    public ControlFlowEntry(int quark, ITmfTrace trace, String execName, int threadId, int parentThreadId, long startTime, long endTime) {
+        super(execName, startTime, endTime);
+        fTrace = trace;
+        fThreadId = threadId;
+        fParentThreadId = parentThreadId;
+        fThreadQuark = quark;
+    }
+
+    /**
+     * Get this entry's thread ID
+     *
+     * @return The TID
+     */
+    public int getThreadId() {
+        return fThreadId;
+    }
+
+    /**
+     * Get the entry's trace
+     *
+     * @return the entry's trace
+     */
+    public ITmfTrace getTrace() {
+        return fTrace;
+    }
+
+    /**
+     * Get this thread's parent TID
+     *
+     * @return The "PTID"
+     */
+    public int getParentThreadId() {
+        return fParentThreadId;
+    }
+
+    /**
+     * Get the quark of the attribute matching this thread's TID
+     *
+     * @return The quark
+     */
+    public int getThreadQuark() {
+        return fThreadQuark;
+    }
+
+    @Override
+    public String toString() {
+        return getClass().getSimpleName() + '(' + getName() + '[' + fThreadId + "])"; //$NON-NLS-1$
+    }
+}
This page took 0.027725 seconds and 5 git commands to generate.