-/*******************************************************************************\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);
+ }
+}