ctf: Introduce IEventDefinition
[deliverable/tracecompass.git] / ctf / org.eclipse.tracecompass.ctf.core / src / org / eclipse / tracecompass / ctf / core / trace / CTFTraceReader.java
index 805c7a9a41a8ad5ba55cf9185ddc0d2df28e92aa..9f2c45c7736a5d78f3d8ce129a43a591ffbdc8ad 100644 (file)
@@ -24,8 +24,8 @@ import java.util.PriorityQueue;
 import java.util.Set;
 
 import org.eclipse.tracecompass.ctf.core.CTFException;
-import org.eclipse.tracecompass.ctf.core.event.EventDefinition;
 import org.eclipse.tracecompass.ctf.core.event.IEventDeclaration;
+import org.eclipse.tracecompass.ctf.core.event.IEventDefinition;
 import org.eclipse.tracecompass.internal.ctf.core.Activator;
 import org.eclipse.tracecompass.internal.ctf.core.trace.StreamInputReaderTimestampComparator;
 
@@ -201,7 +201,7 @@ public class CTFTraceReader implements AutoCloseable {
         /*
          * For each stream.
          */
-        for (CTFStream stream : fTrace.getStreams()) {
+        for (ICTFStream stream : fTrace.getStreams()) {
             Set<CTFStreamInput> streamInputs = stream.getStreamInputs();
 
             /*
@@ -240,22 +240,21 @@ public class CTFTraceReader implements AutoCloseable {
      */
     public void update() throws CTFException {
         Set<CTFStreamInputReader> readers = new HashSet<>();
-        for (CTFStream stream : fTrace.getStreams()) {
+        for (ICTFStream stream : fTrace.getStreams()) {
             Set<CTFStreamInput> streamInputs = stream.getStreamInputs();
             for (CTFStreamInput streamInput : streamInputs) {
                 /*
-                 * Create a reader.
+                 * Create a reader to check if it already exists in the list. If it doesn't, add it.
                  */
-                CTFStreamInputReader streamInputReader = new CTFStreamInputReader(checkNotNull(streamInput));
-
-
-                /*
-                 * Add it to the group.
-                 */
-                if (!fStreamInputReaders.contains(streamInputReader)) {
-                    streamInputReader.readNextEvent();
-                    fStreamInputReaders.add(streamInputReader);
-                    readers.add(streamInputReader);
+                try (CTFStreamInputReader streamInputReader = new CTFStreamInputReader(checkNotNull(streamInput))) {
+                    if (!fStreamInputReaders.contains(streamInputReader)) {
+                        CTFStreamInputReader streamInputReaderToAdd = new CTFStreamInputReader(checkNotNull(streamInput));
+                        streamInputReaderToAdd.readNextEvent();
+                        fStreamInputReaders.add(streamInputReaderToAdd);
+                        readers.add(streamInputReaderToAdd);
+                    }
+                } catch (IOException e) {
+                    Activator.logError(e.getMessage(), e);
                 }
             }
         }
@@ -330,8 +329,9 @@ public class CTFTraceReader implements AutoCloseable {
      *
      * @return An event definition, or null of the trace reader reached the end
      *         of the trace.
+     * @since 2.0
      */
-    public EventDefinition getCurrentEventDef() {
+    public IEventDefinition getCurrentEventDef() {
         CTFStreamInputReader top = getTopStream();
         return (top != null) ? top.getCurrentEvent() : null;
     }
@@ -368,7 +368,7 @@ public class CTFTraceReader implements AutoCloseable {
              * We're in OK, there's a guaranteed top#getCurrentEvent() unless another
              * thread does something bad.
              */
-            EventDefinition currentEvent = checkNotNull(top.getCurrentEvent());
+            IEventDefinition currentEvent = checkNotNull(top.getCurrentEvent());
             final long topEnd = fTrace.timestampCyclesToNanos(currentEvent.getTimestamp());
             setEndTime(Math.max(topEnd, getEndTime()));
             fEventCountPerTraceFile[top.getName()]++;
This page took 0.025946 seconds and 5 git commands to generate.