Merge branch 'master' into lttng-kepler
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng2.kernel.ui / src / org / eclipse / linuxtools / internal / lttng2 / kernel / ui / views / controlflow / ControlFlowEntry.java
index 0bf076993dff89074d52e99b588f0d8b1d526c1a..97b6ef03e753d8bf3be419e1a86aeabc100e7f08 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
-/**\r
- * An entry in the Control Flow view\r
- */\r
-public class ControlFlowEntry implements ITimeGraphEntry {\r
-    private final int fThreadQuark;\r
-    private final CtfKernelTrace fTrace;\r
-    private ControlFlowEntry fParent = null;\r
-    private final ArrayList<ControlFlowEntry> fChildren = new ArrayList<ControlFlowEntry>();\r
-    private final String fName;\r
-    private final int fThreadId;\r
-    private final 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
-    /**\r
-     * Constructor\r
-     *\r
-     * @param threadQuark\r
-     *            The attribute quark matching the thread\r
-     * @param trace\r
-     *            The trace on which we are working\r
-     * @param execName\r
-     *            The exec_name of this entry\r
-     * @param threadId\r
-     *            The TID of the thread\r
-     * @param parentThreadId\r
-     *            the Parent_TID of this thread\r
-     * @param birthTime\r
-     *            The birth time of this entry (this allows separating different\r
-     *            process that could have the same TID)\r
-     * @param startTime\r
-     *            The start time of this process's lifetime\r
-     * @param endTime\r
-     *            The end time of this process\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
-    /**\r
-     * Get the quark of the attribute matching this thread's TID\r
-     *\r
-     * @return The quark\r
-     */\r
-    public int getThreadQuark() {\r
-        return fThreadQuark;\r
-    }\r
-\r
-    /**\r
-     * Get the CTF trace object\r
-     *\r
-     * @return The trace\r
-     */\r
-    public CtfKernelTrace getTrace() {\r
-        return fTrace;\r
-    }\r
-\r
-    /**\r
-     * Get this entry's thread ID\r
-     *\r
-     * @return The TID\r
-     */\r
-    public int getThreadId() {\r
-        return fThreadId;\r
-    }\r
-\r
-    /**\r
-     * Get this thread's parent TID\r
-     *\r
-     * @return The "PTID"\r
-     */\r
-    public int getParentThreadId() {\r
-        return fParentThreadId;\r
-    }\r
-\r
-    /**\r
-     * Get the birth time of this entry/process\r
-     *\r
-     * @return The birth time\r
-     */\r
-    public long getBirthTime() {\r
-        return fBirthTime;\r
-    }\r
-\r
-    /**\r
-     * Add an event to this process's timeline\r
-     *\r
-     * @param event\r
-     *            The time event\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
-    /**\r
-     * Set the general event list of this entry\r
-     *\r
-     * @param eventList\r
-     *            The list of time events\r
-     */\r
-    public void setEventList(List<ITimeEvent> eventList) {\r
-        fEventList = eventList;\r
-    }\r
-\r
-    /**\r
-     * Set the zoomed event list of this entry\r
-     *\r
-     * @param eventList\r
-     *            The list of time events\r
-     */\r
-    public void setZoomedEventList(List<ITimeEvent> eventList) {\r
-        fZoomedEventList = eventList;\r
-    }\r
-\r
-    /**\r
-     * Add a child entry to this one (to show relationships between processes as\r
-     * a tree)\r
-     *\r
-     * @param child\r
-     *            The child entry\r
-     */\r
-    public void addChild(ControlFlowEntry child) {\r
-        child.fParent = this;\r
-        fChildren.add(child);\r
-    }\r
-}\r
+/*******************************************************************************
+ * Copyright (c) 2012 Ericsson
+ *
+ * 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
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.internal.lttng2.kernel.ui.views.controlflow;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.linuxtools.internal.lttng2.kernel.ui.views.common.EventIterator;
+import org.eclipse.linuxtools.lttng2.kernel.core.trace.CtfKernelTrace;
+import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.ITimeEvent;
+import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.ITimeGraphEntry;
+
+/**
+ * An entry in the Control Flow view
+ */
+public class ControlFlowEntry implements ITimeGraphEntry {
+    private final int fThreadQuark;
+    private final CtfKernelTrace fTrace;
+    private ControlFlowEntry fParent = null;
+    private final ArrayList<ControlFlowEntry> fChildren = new ArrayList<ControlFlowEntry>();
+    private final String fName;
+    private final int fThreadId;
+    private final int fParentThreadId;
+    private long fBirthTime = -1;
+    private long fStartTime = -1;
+    private long fEndTime = -1;
+    private List<ITimeEvent> fEventList = new ArrayList<ITimeEvent>();
+    private List<ITimeEvent> fZoomedEventList = null;
+
+    /**
+     * Constructor
+     *
+     * @param threadQuark
+     *            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 birthTime
+     *            The birth time of this entry (this allows separating different
+     *            process that could have the same TID)
+     * @param startTime
+     *            The start time of this process's lifetime
+     * @param endTime
+     *            The end time of this process
+     */
+    public ControlFlowEntry(int threadQuark, CtfKernelTrace trace, String execName, int threadId, int parentThreadId, long birthTime, long startTime, long endTime) {
+        fThreadQuark = threadQuark;
+        fTrace = trace;
+        fName = execName;
+        fThreadId = threadId;
+        fParentThreadId = parentThreadId;
+        fBirthTime = birthTime;
+        fStartTime = startTime;
+        fEndTime = endTime;
+    }
+
+    @Override
+    public ITimeGraphEntry getParent() {
+        return fParent;
+    }
+
+    @Override
+    public boolean hasChildren() {
+        return fChildren != null && fChildren.size() > 0;
+    }
+
+    @Override
+    public ControlFlowEntry[] getChildren() {
+        return fChildren.toArray(new ControlFlowEntry[0]);
+    }
+
+    @Override
+    public String getName() {
+        return fName;
+    }
+
+    @Override
+    public long getStartTime() {
+        return fStartTime;
+    }
+
+    @Override
+    public long getEndTime() {
+        return fEndTime;
+    }
+
+    @Override
+    public boolean hasTimeEvents() {
+        return true;
+    }
+
+    @Override
+    public Iterator<ITimeEvent> getTimeEventsIterator() {
+        return new EventIterator(fEventList, fZoomedEventList);
+    }
+
+    @Override
+    public Iterator<ITimeEvent> getTimeEventsIterator(long startTime, long stopTime, long visibleDuration) {
+        return new EventIterator(fEventList, fZoomedEventList, startTime, stopTime);
+    }
+
+    /**
+     * Get the quark of the attribute matching this thread's TID
+     *
+     * @return The quark
+     */
+    public int getThreadQuark() {
+        return fThreadQuark;
+    }
+
+    /**
+     * Get the CTF trace object
+     *
+     * @return The trace
+     */
+    public CtfKernelTrace getTrace() {
+        return fTrace;
+    }
+
+    /**
+     * Get this entry's thread ID
+     *
+     * @return The TID
+     */
+    public int getThreadId() {
+        return fThreadId;
+    }
+
+    /**
+     * Get this thread's parent TID
+     *
+     * @return The "PTID"
+     */
+    public int getParentThreadId() {
+        return fParentThreadId;
+    }
+
+    /**
+     * Get the birth time of this entry/process
+     *
+     * @return The birth time
+     */
+    public long getBirthTime() {
+        return fBirthTime;
+    }
+
+    /**
+     * Add an event to this process's timeline
+     *
+     * @param event
+     *            The time event
+     */
+    public void addEvent(ITimeEvent event) {
+        long start = event.getTime();
+        long end = start + event.getDuration();
+        synchronized (fEventList) {
+            fEventList.add(event);
+            if (fStartTime == -1 || start < fStartTime) {
+                fStartTime = start;
+            }
+            if (fEndTime == -1 || end > fEndTime) {
+                fEndTime = end;
+            }
+        }
+    }
+
+    /**
+     * Set the general event list of this entry
+     *
+     * @param eventList
+     *            The list of time events
+     */
+    public void setEventList(List<ITimeEvent> eventList) {
+        fEventList = eventList;
+    }
+
+    /**
+     * Set the zoomed event list of this entry
+     *
+     * @param eventList
+     *            The list of time events
+     */
+    public void setZoomedEventList(List<ITimeEvent> eventList) {
+        fZoomedEventList = eventList;
+    }
+
+    /**
+     * Add a child entry to this one (to show relationships between processes as
+     * a tree)
+     *
+     * @param child
+     *            The child entry
+     */
+    public void addChild(ControlFlowEntry child) {
+        child.fParent = this;
+        fChildren.add(child);
+    }
+}
This page took 0.0488 seconds and 5 git commands to generate.