ctf: Support Streamless packet readers
authorMatthew Khouzam <matthew.khouzam@ericsson.com>
Mon, 23 Nov 2015 23:39:05 +0000 (18:39 -0500)
committerMatthew Khouzam <matthew.khouzam@ericsson.com>
Tue, 24 Nov 2015 19:00:46 +0000 (14:00 -0500)
If a stream isn't set, the default one is null. This ensures that streamless
traces work.

Change-Id: Iad06dd965e3ca1173008cec5b8e68ac3bc910cbe
Signed-off-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/61089
Reviewed-by: Hudson CI
Reviewed-by: Patrick Tasse <patrick.tasse@gmail.com>
Tested-by: Patrick Tasse <patrick.tasse@gmail.com>
ctf/org.eclipse.tracecompass.ctf.core/src/org/eclipse/tracecompass/internal/ctf/core/event/EventDeclaration.java

index cf8bdaa6bb4c5ef2a191b07a1ff90a4715695093..6eb404b3a2046cc246f2a492d6d0aad1a6f6c619 100644 (file)
@@ -33,6 +33,7 @@ import org.eclipse.tracecompass.ctf.core.event.types.StructDefinition;
 import org.eclipse.tracecompass.ctf.core.trace.CTFIOException;
 import org.eclipse.tracecompass.ctf.core.trace.CTFStream;
 import org.eclipse.tracecompass.ctf.core.trace.CTFStreamInputReader;
+import org.eclipse.tracecompass.ctf.core.trace.CTFTrace;
 import org.eclipse.tracecompass.ctf.core.trace.ICTFPacketDescriptor;
 import org.eclipse.tracecompass.internal.ctf.core.event.types.composite.EventHeaderDefinition;
 
@@ -64,7 +65,7 @@ public class EventDeclaration implements IEventDeclaration {
     /**
      * Stream to which belongs this event.
      */
-    private CTFStream fStream = null;
+    private @Nullable CTFStream fStream = null;
 
     /**
      * Loglevel of an event
@@ -109,9 +110,11 @@ public class EventDeclaration implements IEventDeclaration {
      */
     public EventDefinition createDefinition(StructDeclaration streamEventContextDecl, ICTFPacketDescriptor packetDescriptor, ICompositeDefinition packetContext, ICompositeDefinition eventHeaderDef, @NonNull BitBuffer input, long prevTimestamp)
             throws CTFException {
-        StructDefinition streamEventContext = streamEventContextDecl != null ? streamEventContextDecl.createDefinition(fStream.getTrace(), ILexicalScope.STREAM_EVENT_CONTEXT, input) : null;
-        StructDefinition eventContext = fContext != null ? fContext.createFieldDefinition(eventHeaderDef, fStream.getTrace(), ILexicalScope.CONTEXT, input) : null;
-        StructDefinition eventPayload = fFields != null ? fFields.createFieldDefinition(eventHeaderDef, fStream.getTrace(), ILexicalScope.FIELDS, input) : null;
+        final CTFStream stream = fStream;
+        final CTFTrace trace = stream == null ? null : stream.getTrace();
+        StructDefinition streamEventContext = streamEventContextDecl != null ? streamEventContextDecl.createDefinition(trace, ILexicalScope.STREAM_EVENT_CONTEXT, input) : null;
+        StructDefinition eventContext = fContext != null ? fContext.createFieldDefinition(eventHeaderDef, trace, ILexicalScope.CONTEXT, input) : null;
+        StructDefinition eventPayload = fFields != null ? fFields.createFieldDefinition(eventHeaderDef, trace, ILexicalScope.FIELDS, input) : null;
         long timestamp = calculateTimestamp(eventHeaderDef, prevTimestamp, eventPayload, eventContext);
 
         int cpu = (int) packetDescriptor.getTargetId();
@@ -155,10 +158,12 @@ public class EventDeclaration implements IEventDeclaration {
     @Override
     public EventDefinition createDefinition(CTFStreamInputReader streamInputReader, @NonNull BitBuffer input, long timestamp) throws CTFException {
         StructDeclaration streamEventContextDecl = streamInputReader.getStreamEventContextDecl();
-        StructDefinition streamEventContext = streamEventContextDecl != null ? streamEventContextDecl.createDefinition(fStream.getTrace(), ILexicalScope.STREAM_EVENT_CONTEXT, input) : null;
+        final @Nullable CTFStream stream = fStream;
+        final CTFTrace trace = stream == null ? null : stream.getTrace();
+        StructDefinition streamEventContext = streamEventContextDecl != null ? streamEventContextDecl.createDefinition(trace, ILexicalScope.STREAM_EVENT_CONTEXT, input) : null;
         ICompositeDefinition packetContext = streamInputReader.getCurrentPacketReader().getCurrentPacketEventHeader();
-        StructDefinition eventContext = fContext != null ? fContext.createDefinition(fStream.getTrace(), ILexicalScope.CONTEXT, input) : null;
-        StructDefinition eventPayload = fFields != null ? fFields.createDefinition(fStream.getTrace(), ILexicalScope.FIELDS, input) : null;
+        StructDefinition eventContext = fContext != null ? fContext.createDefinition(trace, ILexicalScope.CONTEXT, input) : null;
+        StructDefinition eventPayload = fFields != null ? fFields.createDefinition(trace, ILexicalScope.FIELDS, input) : null;
 
         // a bit lttng specific
         // CTF doesn't require a timestamp,
@@ -443,7 +448,8 @@ public class EventDeclaration implements IEventDeclaration {
         result = (prime * result) + ((fFields == null) ? 0 : fFields.hashCode());
         result = (prime * result) + fId;
         result = (prime * result) + ((fName == null) ? 0 : fName.hashCode());
-        result = (prime * result) + ((fStream == null) ? 0 : fStream.hashCode());
+        final CTFStream stream = fStream;
+        result = (prime * result) + ((stream == null) ? 0 : stream.hashCode());
         result = (prime * result) + fCustomAttributes.hashCode();
         return result;
     }
This page took 0.0285 seconds and 5 git commands to generate.