ctf: Simplify StreamInputPacketReader
authorAlexandre Montplaisir <alexmonthy@voxpopuli.im>
Wed, 15 Aug 2012 15:49:20 +0000 (11:49 -0400)
committerAlexandre Montplaisir <alexmonthy@voxpopuli.im>
Thu, 23 Aug 2012 17:25:29 +0000 (13:25 -0400)
- Make all internal structures final, initialize them in
  the constructor.
- Remove all the public getters and setters for those, they
  are only used internally.
- Replace a couple more null checks by "instanceof" checks.
  (previously, if a field name was present but not of the
  right type, it would throw a ClassCastException)

Change-Id: If4376a6310b48737a45892399dbb935e647ef0d8
Signed-off-by: Alexandre Montplaisir <alexmonthy@voxpopuli.im>
Reviewed-on: https://git.eclipse.org/r/7241
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
IP-Clean: Matthew Khouzam <matthew.khouzam@ericsson.com>
Tested-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
org.eclipse.linuxtools.ctf.core/src/org/eclipse/linuxtools/ctf/core/trace/StreamInputPacketReader.java

index 565a68095be0568c583a2a2ca15cc92cbc51335c..87e474b545bda71045c809e99426ef39e4261754 100644 (file)
@@ -40,71 +40,51 @@ import org.eclipse.linuxtools.internal.ctf.core.trace.StreamInputPacketIndexEntr
 public class StreamInputPacketReader implements IDefinitionScope {
 
     // ------------------------------------------------------------------------
-    // Constants
+    // Attributes
     // ------------------------------------------------------------------------
 
-    /**
-     * Reference to the index entry of the current packet.
-     */
-    private StreamInputPacketIndexEntry currentPacket = null;
-
-    /**
-     * BitBuffer used to read the trace file.
-     */
-    private final BitBuffer bitBuffer = new BitBuffer();
+    /** BitBuffer used to read the trace file. */
+    private final BitBuffer bitBuffer;
 
-    /**
-     * StreamInputReader that uses this StreamInputPacketReader.
-     */
+    /** StreamInputReader that uses this StreamInputPacketReader. */
     private final StreamInputReader streamInputReader;
 
-    /**
-     * Last timestamp recorded.
-     *
-     * Needed to calculate the complete timestamp values for the events with
-     * compact headers.
-     */
-    private long lastTimestamp = 0;
-
-    /**
-     * Trace packet header.
-     */
-    private StructDefinition tracePacketHeaderDef = null;
+    /** Trace packet header. */
+    private final StructDefinition tracePacketHeaderDef;
 
-    /**
-     * Stream packet context definition.
-     */
-    private StructDefinition streamPacketContextDef = null;
+    /** Stream packet context definition. */
+    private final StructDefinition streamPacketContextDef;
 
-    /**
-     * Stream event header definition.
-     */
-    private StructDefinition streamEventHeaderDef = null;
+    /** Stream event header definition. */
+    private final StructDefinition streamEventHeaderDef;
 
-    /**
-     * Stream event context definition.
-     */
-    private StructDefinition streamEventContextDef = null;
+    /** Stream event context definition.*/
+    private final StructDefinition streamEventContextDef;
 
-    /**
-     * Maps event ID to event definitions.
-     */
+    /** Maps event ID to event definitions. */
     private final HashMap<Long, EventDefinition> events;
 
+    /** Reference to the index entry of the current packet. */
+    private StreamInputPacketIndexEntry currentPacket = null;
+
     /**
-     * CPU id of current packet.
+     * Last timestamp recorded.
+     *
+     * Needed to calculate the complete timestamp values for the events with
+     * compact headers.
      */
+    private long lastTimestamp = 0;
+
+    /** CPU id of current packet. */
     private int currentCpu = 0;
 
-    /**
-     * number of lost events in this packet
-     */
+    /** number of lost events in this packet */
     private int lostSoFar;
 
     private int lostEventsInThisPacket;
 
     // ------------------------------------------------------------------------
-    // Attributes
+    // Constructors
     // ------------------------------------------------------------------------
 
     /**
@@ -116,24 +96,56 @@ public class StreamInputPacketReader implements IDefinitionScope {
     public StreamInputPacketReader(StreamInputReader streamInputReader) {
         this.streamInputReader = streamInputReader;
 
-        /*
-         * Set the BitBuffer's byte order.
-         */
-        getBitBuffer().setByteOrder(streamInputReader.getByteOrder());
-
-        events = streamInputReader.getStreamInput().getStream().getTrace()
-                .getEventDefs(streamInputReader.getStreamInput());
-        /*
-         * Create definitions needed to read the events.
-         */
-        createDefinitions();
+        /* Set the BitBuffer's byte order. */
+        bitBuffer = new BitBuffer();
+        bitBuffer.setByteOrder(streamInputReader.getByteOrder());
 
+        events = streamInputReader.getStreamInput().getStream().getTrace().getEventDefs(streamInputReader.getStreamInput());
         lostSoFar = 0;
-    }
 
-    // ------------------------------------------------------------------------
-    // Constructors
-    // ------------------------------------------------------------------------
+        /* Create trace packet header definition. */
+        final Stream currentStream = streamInputReader.getStreamInput().getStream();
+        StructDeclaration tracePacketHeaderDecl = currentStream.getTrace().getPacketHeader();
+        if (tracePacketHeaderDecl != null) {
+            tracePacketHeaderDef = tracePacketHeaderDecl.createDefinition(this, "trace.packet.header"); //$NON-NLS-1$
+        } else {
+            tracePacketHeaderDef = null;
+        }
+
+        /* Create stream packet context definition. */
+        StructDeclaration streamPacketContextDecl = currentStream.getPacketContextDecl();
+        if (streamPacketContextDecl != null) {
+            streamPacketContextDef = streamPacketContextDecl.createDefinition(this, "stream.packet.context"); //$NON-NLS-1$
+        } else {
+            streamPacketContextDef = null;
+        }
+
+        /* Create stream event header definition. */
+        StructDeclaration streamEventHeaderDecl = currentStream.getEventHeaderDecl();
+        if (streamEventHeaderDecl != null) {
+            streamEventHeaderDef = streamEventHeaderDecl.createDefinition(this, "stream.event.header"); //$NON-NLS-1$
+        } else {
+            streamEventHeaderDef = null;
+        }
+
+        /* Create stream event context definition. */
+        StructDeclaration streamEventContextDecl = currentStream.getEventContextDecl();
+        if (streamEventContextDecl != null) {
+            streamEventContextDef = streamEventContextDecl.createDefinition(this, "stream.event.context"); //$NON-NLS-1$
+        } else {
+            streamEventContextDef = null;
+        }
+
+        /* Create event definitions */
+        Collection<EventDeclaration> eventDecls = streamInputReader.getStreamInput().getStream().getEvents().values();
+
+        for (EventDeclaration event : eventDecls) {
+            if (!events.containsKey(event.getId())) {
+                EventDefinition eventDef = event.createDefinition(streamInputReader);
+                events.put(event.getId(), eventDef);
+            }
+        }
+    }
 
     // ------------------------------------------------------------------------
     // Getters/Setters/Predicates
@@ -175,75 +187,6 @@ public class StreamInputPacketReader implements IDefinitionScope {
     // Operations
     // ------------------------------------------------------------------------
 
-    /**
-     * Creates definitions needed to read events (stream-defined and
-     * event-defined).
-     */
-    private void createDefinitions() {
-        /*
-         * Create trace packet header definition.
-         */
-        final Stream currentStream = getStreamInputReader().getStreamInput()
-                .getStream();
-        StructDeclaration tracePacketHeaderDecl = currentStream.getTrace()
-                .getPacketHeader();
-        if (tracePacketHeaderDecl != null) {
-            setTracePacketHeaderDef(tracePacketHeaderDecl.createDefinition(
-                    this, "trace.packet.header")); //$NON-NLS-1$
-        }
-
-        /*
-         * Create stream packet context definition.
-         */
-        StructDeclaration streamPacketContextDecl = currentStream
-                .getPacketContextDecl();
-        if (streamPacketContextDecl != null) {
-            setStreamPacketContextDef(streamPacketContextDecl.createDefinition(
-                    this, "stream.packet.context")); //$NON-NLS-1$
-        }
-
-        /*
-         * Create stream event header definition.
-         */
-        StructDeclaration streamEventHeaderDecl = currentStream
-                .getEventHeaderDecl();
-        if (streamEventHeaderDecl != null) {
-            setStreamEventHeaderDef(streamEventHeaderDecl.createDefinition(
-                    this, "stream.event.header")); //$NON-NLS-1$
-        }
-
-        /*
-         * Create stream event context definition.
-         */
-        StructDeclaration streamEventContextDecl = currentStream
-                .getEventContextDecl();
-        if (streamEventContextDecl != null) {
-            setStreamEventContextDef(streamEventContextDecl.createDefinition(
-                    this, "stream.event.context")); //$NON-NLS-1$
-        }
-
-        createEventDefinitions();
-    }
-
-    /**
-     * Creates definitions needed to read the event. (event-defined).
-     */
-    private void createEventDefinitions() {
-        Collection<EventDeclaration> eventDecls = getStreamInputReader()
-                .getStreamInput().getStream().getEvents().values();
-
-        /*
-         * Create definitions for each event.
-         */
-        for (EventDeclaration event : eventDecls) {
-            if (!events.containsKey(event.getId())) {
-                EventDefinition eventDef = event
-                        .createDefinition(getStreamInputReader());
-                events.put(event.getId(), eventDef);
-            }
-        }
-    }
-
     /**
      * Changes the current packet to the given one.
      *
@@ -259,9 +202,7 @@ public class StreamInputPacketReader implements IDefinitionScope {
              */
             MappedByteBuffer bb = null;
             try {
-                bb = getStreamInputReader()
-                        .getStreamInput()
-                        .getFileChannel()
+                bb = streamInputReader.getStreamInput().getFileChannel()
                         .map(MapMode.READ_ONLY,
                                 this.currentPacket.getOffsetBytes(),
                                 (this.currentPacket.getPacketSizeBits() + 7) / 8);
@@ -273,20 +214,20 @@ public class StreamInputPacketReader implements IDefinitionScope {
                 e.printStackTrace();
             }
 
-            getBitBuffer().setByteBuffer(bb);
+            bitBuffer.setByteBuffer(bb);
 
             /*
              * Read trace packet header.
              */
-            if (getTracePacketHeaderDef() != null) {
-                getTracePacketHeaderDef().read(getBitBuffer());
+            if (tracePacketHeaderDef != null) {
+                tracePacketHeaderDef.read(bitBuffer);
             }
 
             /*
              * Read stream packet context.
              */
             if (getStreamPacketContextDef() != null) {
-                getStreamPacketContextDef().read(getBitBuffer());
+                getStreamPacketContextDef().read(bitBuffer);
 
                 /* Read CPU ID */
                 if (this.getCurrentPacket().getTarget() != null) {
@@ -305,7 +246,7 @@ public class StreamInputPacketReader implements IDefinitionScope {
              */
             lastTimestamp = currentPacket.getTimestampBegin();
         } else {
-            getBitBuffer().setByteBuffer(null);
+            bitBuffer.setByteBuffer(null);
 
             lastTimestamp = 0;
         }
@@ -318,8 +259,7 @@ public class StreamInputPacketReader implements IDefinitionScope {
      */
     public boolean hasMoreEvents() {
         if (currentPacket != null) {
-            return getBitBuffer().position() < currentPacket
-                    .getContentSizeBits();
+            return bitBuffer.position() < currentPacket.getContentSizeBits();
         }
         return false;
     }
@@ -338,15 +278,14 @@ public class StreamInputPacketReader implements IDefinitionScope {
         long timestamp = 0;
 
         if (lostEventsInThisPacket > lostSoFar) {
-            EventDefinition eventDef = EventDeclaration.getLostEventDeclaration().createDefinition(
-                    streamInputReader);
+            EventDefinition eventDef = EventDeclaration.getLostEventDeclaration().createDefinition(streamInputReader);
             eventDef.setTimestamp(this.lastTimestamp);
             ++lostSoFar;
             return eventDef;
         }
 
-        final StructDefinition sehd = getStreamEventHeaderDef();
-        final BitBuffer currentBitBuffer = getBitBuffer();
+        final StructDefinition sehd = streamEventHeaderDef;
+        final BitBuffer currentBitBuffer = bitBuffer;
 
         /* Read the stream event header. */
         if (sehd != null) {
@@ -360,31 +299,32 @@ public class StreamInputPacketReader implements IDefinitionScope {
 
             /* Get the timestamp from the event header (may be overridden later on) */
             Definition timestampDef = sehd.lookupInteger("timestamp"); //$NON-NLS-1$
+            if (timestampDef instanceof IntegerDefinition) {
+                timestamp = calculateTimestamp((IntegerDefinition) timestampDef);
+            } // else timestamp remains 0
 
             /* Check for the variant v. */
-            VariantDefinition variantDef = (VariantDefinition) sehd.lookupDefinition("v"); //$NON-NLS-1$
-            if (variantDef != null) {
+            Definition variantDef = sehd.lookupDefinition("v"); //$NON-NLS-1$
+            if (variantDef instanceof VariantDefinition) {
 
                 /* Get the variant current field */
-                StructDefinition variantCurrentField = (StructDefinition) variantDef.getCurrentField();
+                StructDefinition variantCurrentField = (StructDefinition) ((VariantDefinition) variantDef).getCurrentField();
 
                 /*
                  * Try to get the id field in the current field of the variant.
                  * If it is present, it overrides the previously read event id.
                  */
-                IntegerDefinition idIntegerDef = (IntegerDefinition) variantCurrentField.lookupDefinition("id"); //$NON-NLS-1$
-                if (idIntegerDef != null) {
-                    eventID = idIntegerDef.getValue();
+                Definition idIntegerDef = variantCurrentField.lookupDefinition("id"); //$NON-NLS-1$
+                if (idIntegerDef instanceof IntegerDefinition) {
+                    eventID = ((IntegerDefinition) idIntegerDef).getValue();
                 }
 
-                /* Get the timestamp. */
+                /* Get the timestamp. This would overwrite any previous timestamp definition */
                 timestampDef = variantCurrentField.lookupDefinition("timestamp"); //$NON-NLS-1$
+                if (timestampDef instanceof IntegerDefinition) {
+                    timestamp = calculateTimestamp((IntegerDefinition) timestampDef);
+                }
             }
-
-            /* Calculate the event timestamp. */
-            if (timestampDef instanceof IntegerDefinition) {
-                timestamp = calculateTimestamp((IntegerDefinition) timestampDef);
-            } // else timestamp remains 0
         }
 
         /* Read the stream event context. */
@@ -466,88 +406,4 @@ public class StreamInputPacketReader implements IDefinitionScope {
         // TODO Auto-generated method stub
         return null;
     }
-
-    /**
-     * Gets the stream event context definition (see CTF specs)
-     *
-     * @return the definition of the stream event context (the form not the
-     *         content)
-     */
-    public StructDefinition getStreamEventContextDef() {
-        return this.streamEventContextDef;
-    }
-
-    /**
-     * Sets the stream event context definition
-     *
-     * @param streamEventContextDef
-     *            The stream event context definition
-     */
-    public void setStreamEventContextDef(StructDefinition streamEventContextDef) {
-        this.streamEventContextDef = streamEventContextDef;
-    }
-
-    /**
-     * Gets the stream event header definition
-     *
-     * @return the stream event header definition
-     */
-    public StructDefinition getStreamEventHeaderDef() {
-        return this.streamEventHeaderDef;
-    }
-
-    /**
-     * Sets the stream event header definition
-     *
-     * @param streamEventHeaderDef
-     *            the stream event header definition
-     */
-    public void setStreamEventHeaderDef(StructDefinition streamEventHeaderDef) {
-        this.streamEventHeaderDef = streamEventHeaderDef;
-    }
-
-    /**
-     * Sets the stream packet context definition
-     *
-     * @param streamPacketContextDef
-     *            the stream packet context definition
-     */
-    public void setStreamPacketContextDef(
-            StructDefinition streamPacketContextDef) {
-        this.streamPacketContextDef = streamPacketContextDef;
-    }
-
-    /**
-     * Gets the trace packet header definition
-     *
-     * @return the trace packet header definition
-     */
-    public StructDefinition getTracePacketHeaderDef() {
-        return this.tracePacketHeaderDef;
-    }
-
-    /**
-     * Sets the trace packet header definition
-     *
-     * @param tracePacketHeaderDef
-     *            the trace packet header definition
-     */
-    public void setTracePacketHeaderDef(StructDefinition tracePacketHeaderDef) {
-        this.tracePacketHeaderDef = tracePacketHeaderDef;
-    }
-
-    /**
-     * @return the parent stream input reader
-     */
-    public StreamInputReader getStreamInputReader() {
-        return this.streamInputReader;
-    }
-
-    /**
-     *
-     * @return THe bit buffer that reads the file.
-     */
-    public BitBuffer getBitBuffer() {
-        return bitBuffer;
-    }
 }
This page took 0.031 seconds and 5 git commands to generate.