Refactor TmfTrace and dependencies - finalize ITmfTraceIndexer
authorFrancois Chouinard <fchouinard@gmail.com>
Fri, 20 Apr 2012 23:05:53 +0000 (19:05 -0400)
committerFrancois Chouinard <fchouinard@gmail.com>
Fri, 20 Apr 2012 23:05:53 +0000 (19:05 -0400)
org.eclipse.linuxtools.lttng.core/src/org/eclipse/linuxtools/internal/lttng/core/trace/LTTngTextTrace.java
org.eclipse.linuxtools.lttng.core/src/org/eclipse/linuxtools/internal/lttng/core/trace/LTTngTrace.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/component/TmfDataProvider.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/event/ITmfEvent.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/event/ITmfTimestamp.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/ITmfTrace.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/ITmfTraceIndexer.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/TmfTrace.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/TmfTraceIndexer.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/internal/tmf/ui/parsers/custom/CustomTxtTrace.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/internal/tmf/ui/parsers/custom/CustomXmlTrace.java

index 13166d72dcb4696abf584b2cee6978369038c96b..c757bc783ed029569526f117be5459d6d3e7f5cd 100644 (file)
@@ -27,7 +27,6 @@ import org.eclipse.linuxtools.lttng.jni.JniEvent;
 import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
 import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;
 import org.eclipse.linuxtools.tmf.core.trace.ITmfLocation;
-import org.eclipse.linuxtools.tmf.core.trace.TmfCheckpoint;
 import org.eclipse.linuxtools.tmf.core.trace.TmfContext;
 import org.eclipse.linuxtools.tmf.core.trace.TmfLocation;
 import org.eclipse.linuxtools.tmf.core.trace.TmfTrace;
@@ -58,7 +57,7 @@ public class LTTngTextTrace extends TmfTrace<LttngEvent> {
 
     public LTTngTextTrace(final IResource resource, final String path, final boolean skipIndexing) throws Exception {
         //      super(null, LttngEvent.class, path, 1, !skipIndexing);
-        super(null, LttngEvent.class, path, 1);
+        super(null, LttngEvent.class, path, 1000);
 
         tracepath = path;
         traceTypes      = new HashMap<String, LttngEventType>();
@@ -75,11 +74,13 @@ public class LTTngTextTrace extends TmfTrace<LttngEvent> {
         if ( positionToFirstEvent() == false )
             throw new IOException("Fail to position to the beginning of the trace"); //$NON-NLS-1$
         else {
-            fCacheSize = 1000;
+//            fCacheSize = 1000;
 
             // Skip indexing if asked
             //         if ( skipIndexing == true ) {
-            fCheckpoints.add(new TmfCheckpoint(new LttngTimestamp(0L), new TmfLocation<Long>(0L)));
+//            fCheckpoints.add(new TmfCheckpoint(new LttngTimestamp(0L), new TmfLocation<Long>(0L)));
+            ITmfContext context = new TmfContext(new TmfLocation<Long>(0L), 0);
+            fIndexer.updateIndex(context, new LttngTimestamp(0L));
             //         }
             //         else {
             //                 indexTrace(true);
@@ -104,7 +105,7 @@ public class LTTngTextTrace extends TmfTrace<LttngEvent> {
 
         // *** VERIFY ***
         // Is this safe?
-        fCheckpoints = oldTrace.fCheckpoints;
+//        fCheckpoints = oldTrace.fCheckpoints;
     }
 
     private boolean positionToFirstEvent() {
index d14f7c2b2159576859789e3e08c4c6bec8b30247..cc65e7ae9b691372332f310b11bac56da57bdc2f 100644 (file)
@@ -307,7 +307,7 @@ public class LTTngTrace extends TmfTrace<LttngEvent> {
      */
     public LTTngTrace(final LTTngTrace other) throws Exception {
         this(other.getResource(), other.getPath(), other.getTraceLibPath(), false, true);
-        this.fCheckpoints = other.fCheckpoints;
+//        this.fCheckpoints = other.fCheckpoints;
         setTimeRange(new TmfTimeRange(new LttngTimestamp(other.getStartTime()), new LttngTimestamp(other.getEndTime())));
     }
 
@@ -526,17 +526,23 @@ public class LTTngTrace extends TmfTrace<LttngEvent> {
         if (PRINT_DEBUG)
             System.out.println("seekEvent(rank) rank -> " + rank); //$NON-NLS-1$
 
-        ITmfTimestamp timestamp = null;
+//        ITmfTimestamp timestamp = null;
+//        long index = rank / getCacheSize();
+//
+//        // Get the timestamp of the closest check point to the given position
+//        if (fCheckpoints.size() > 0) {
+//            if (index >= fCheckpoints.size())
+//                index = fCheckpoints.size() - 1;
+//            timestamp = fCheckpoints.elementAt((int) index).getTimestamp();
+//        } else
+//            timestamp = getStartTime();
+
+        // Position the trace at the checkpoint
+        final ITmfContext checkpointContext = fIndexer.seekIndex(rank);
+        LttngLocation location = (LttngLocation) checkpointContext.getLocation();
+        ITmfTimestamp timestamp = location.getLocation();
         long index = rank / getCacheSize();
 
-        // Get the timestamp of the closest check point to the given position
-        if (fCheckpoints.size() > 0) {
-            if (index >= fCheckpoints.size())
-                index = fCheckpoints.size() - 1;
-            timestamp = fCheckpoints.elementAt((int) index).getTimestamp();
-        } else
-            timestamp = getStartTime();
-
         // Seek to the found time
         final TmfContext tmpContext = seekEvent(timestamp);
         tmpContext.setRank((index + 1) * fCacheSize);
@@ -667,7 +673,7 @@ public class LTTngTrace extends TmfTrace<LttngEvent> {
         // long eventTime = eventTimestamp.getValue();
         previousLocation.setOperationTime(eventTimestamp.getValue());
         curLocation.setOperationTime(eventTimestamp.getValue());
-        updateIndex(context, context.getRank(), eventTimestamp);
+        updateAttributes(context, eventTimestamp);
         context.increaseRank();
     }
 
@@ -1011,24 +1017,24 @@ public class LTTngTrace extends TmfTrace<LttngEvent> {
             return -1;
     }
 
-    /**
-     * Print the content of the checkpoint vector.
-     * <p>
-     * 
-     * This is intended for debug purpose only.
-     */
-    public void printCheckpointsVector() {
-        System.out.println("StartTime : " //$NON-NLS-1$
-                + getTimeRange().getStartTime().getValue());
-        System.out.println("EndTime   : " //$NON-NLS-1$
-                + getTimeRange().getEndTime().getValue());
-
-        for (int pos = 0; pos < fCheckpoints.size(); pos++) {
-            System.out.print(pos + ": " + "\t"); //$NON-NLS-1$ //$NON-NLS-2$
-            System.out.print(fCheckpoints.get(pos).getTimestamp() + "\t"); //$NON-NLS-1$
-            System.out.println(fCheckpoints.get(pos).getLocation());
-        }
-    }
+//    /**
+//     * Print the content of the checkpoint vector.
+//     * <p>
+//     * 
+//     * This is intended for debug purpose only.
+//     */
+//    public void printCheckpointsVector() {
+//        System.out.println("StartTime : " //$NON-NLS-1$
+//                + getTimeRange().getStartTime().getValue());
+//        System.out.println("EndTime   : " //$NON-NLS-1$
+//                + getTimeRange().getEndTime().getValue());
+//
+//        for (int pos = 0; pos < fCheckpoints.size(); pos++) {
+//            System.out.print(pos + ": " + "\t"); //$NON-NLS-1$ //$NON-NLS-2$
+//            System.out.print(fCheckpoints.get(pos).getTimestamp() + "\t"); //$NON-NLS-1$
+//            System.out.println(fCheckpoints.get(pos).getLocation());
+//        }
+//    }
 
     @Override
     public synchronized void dispose() {
index cd541d3b38345d6a5cc9a9ae165a8b354084faad..de628fdd5a003ac37475957b2267ebbd89f8732a 100644 (file)
@@ -376,13 +376,21 @@ public abstract class TmfDataProvider<T extends ITmfEvent> extends TmfComponent
     }
 
     /**
-     * Initialize the provider based on the request. The context is provider specific and will be updated by getNext().
+     * Initialize the provider based on the request. The context is provider
+     * specific and will be updated by getNext().
      * 
      * @param request
      * @return an application specific context; null if request can't be serviced
      */
     public abstract ITmfContext armRequest(ITmfDataRequest<T> request);
 
+    /**
+     * Return the next event based on the context supplied. The context
+     * will be updated for the subsequent read.
+     * 
+     * @param context the trace read context (updated)
+     * @return the event referred to by context
+     */
     public abstract T getNext(ITmfContext context);
 
     /**
index 2b6be5ebab55fc27ae58e9a19c9990cc9af364b3..550d86de3029cc14bc26c91b4c025b8c64721f02 100644 (file)
@@ -29,6 +29,11 @@ import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
  * For convenience, a free-form reference field is also provided. It could be
  * used as e.g. a location marker (filename:lineno) to indicate where the event
  * was generated.
+ * 
+ * @see ITmfTimestamp
+ * @see ITmfEventType
+ * @see ITmfEvetnField
+ * @see TmfEvent
  */
 public interface ITmfEvent extends Cloneable {
 
index 8bb3f3e7e9bac49e3c70b45ae55bb61c88e7f923..b72fb83e5b985cab105fb3ee44af4d36697c29ed 100644 (file)
@@ -29,6 +29,13 @@ package org.eclipse.linuxtools.tmf.core.event;
  * <li>[precision] indicates the error on the value (useful for comparing
  * timestamps in different scales). Default: 0.
  * </ul>
+ * 
+ * @since 1.0
+ * @version 1.0
+ * @author Francois Chouinard
+ * @see TmfTimestamp
+ * @see TmfSimpleTimestamp
+ * @see TmfTimeRange
  */
 public interface ITmfTimestamp extends Cloneable, Comparable<ITmfTimestamp> {
 
index 15666917f8a66a8b5c3c4bf91fb734efdb478631..befb513660ae0a9497fbad0db30710809383b5fc 100644 (file)
@@ -46,24 +46,24 @@ import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
  * trace. Seek operations can be performed for a particular event (by rank or
  * timestamp) or for a plain trace location.
  * <p>
- * <b>Example 1</b>: Read a whole trace
+ * <b>Example 1</b>: Process a whole trace
  * <pre>
  * ITmfContext context = trace.seekLocationt(null);
- * ITmfEvent event = trace.getEvent(context);
+ * ITmfEvent event = trace.getNextEvent(context);
  * while (event != null) {
- *     // Do something ...
- *     event = trace.getEvent(context);
+ *     processEvent(event);
+ *     event = trace.getNextEvent(context);
  * }
  * </pre>
  * <b>Example 2</b>: Process 50 events starting from the 1000th event
  * <pre>
  * int nbEventsRead = 0;
  * ITmfContext context = trace.seekEvent(1000);
- * ITmfEvent event = trace.getEvent(context);
+ * ITmfEvent event = trace.getNextEvent(context);
  * while (event != null && nbEventsRead < 50) {
  *     nbEventsRead++;
- *     // Do something ...
- *     event = trace.getEvent(context);
+ *     processEvent(event);
+ *     event = trace.getNextEvent(context);
  * }
  * </pre>
  * <b>Example 3</b>: Process the events between 2 timestamps (inclusive)
@@ -71,12 +71,38 @@ import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
  * ITmfTimestamp startTime = ...;
  * ITmfTimestamp endTime = ...;
  * ITmfContext context = trace.seekEvent(startTime);
- * ITmfEvent event = trace.getEvent(context);
+ * ITmfEvent event = trace.getNextEvent(context);
  * while (event != null && event.getTimestamp().compareTo(endTime) <= 0) {
- *     // Do something ...
- *     event = trace.getEvent(context);
+ *     processEvent(event);
+ *     event = trace.getNextEvent(context);
  * }
  * </pre>
+ * A trace is also an event provider so it can process event requests
+ * asynchronously (and coalesce compatible requests).
+ * <p>
+ * </pre>
+ * <b>Example 4</b>: Process a whole trace
+ * <pre>
+ * ITmfRequest request = new TmfEventRequest&lt;MyEventType&gt;(MyEventType.class) {
+ *     &#64;Override
+ *     public void handleData(MyEventType event) {
+ *         super.handleData(event);
+ *         processEvent(event);
+ *     }
+ *     &#64;Override
+ *     public void handleCompleted() {
+ *         finish();
+ *         super.handleCompleted();
+ *     }
+ * };
+ * fTrace.handleRequest(request);
+ * if (youWant) {
+ *     request.waitForCompletion();
+ * } 
+ * </pre>
+ * @see ITmfEvent
+ * @see ITmfEventProvider
+ * @see ITmfRequest
  */
 public interface ITmfTrace<T extends ITmfEvent> extends ITmfDataProvider<T> {
 
@@ -88,7 +114,7 @@ public interface ITmfTrace<T extends ITmfEvent> extends ITmfDataProvider<T> {
      * Initialize a newly instantiated "empty" trace object. This is used to
      * properly parameterize an ITmfTrace instantiated with its parameterless
      * constructor.
-     * 
+     * <p>
      * Typically, the parameterless constructor will provide the block size
      * and its associated parser and indexer.
      * 
index dcf878f49a23b24ad94cf16f3f3e968d362d83b9..2048a1170f3203ecb7ebe504c3c0878e3fd58401 100644 (file)
@@ -34,10 +34,9 @@ public interface ITmfTraceIndexer<T extends ITmfTrace<ITmfEvent>> {
      * Adds an entry to the trace index. 
      * 
      * @param context
-     * @param rank
      * @param timestamp
      */
-    public void updateIndex(ITmfContext context, long rank, ITmfTimestamp timestamp);
+    public void updateIndex(ITmfContext context, ITmfTimestamp timestamp);
     
     /**
      * Returns the context of the checkpoint immediately preceding the requested
index d7b8e62eaa6e8609a1fd70c02d36714dc5a6604b..0f2063a5a16cf12ea89bc5df8b67a7ce07ba6b71 100644 (file)
@@ -15,7 +15,6 @@ package org.eclipse.linuxtools.tmf.core.trace;
 
 import java.io.File;
 import java.io.FileNotFoundException;
-import java.util.Vector;
 
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
@@ -62,7 +61,7 @@ public abstract class TmfTrace<T extends ITmfEvent> extends TmfEventProvider<T>
     protected int fCacheSize = DEFAULT_TRACE_CACHE_SIZE;
 
     // The set of event stream checkpoints
-    protected Vector<TmfCheckpoint> fCheckpoints = new Vector<TmfCheckpoint>();
+//    protected Vector<TmfCheckpoint> fCheckpoints = new Vector<TmfCheckpoint>();
 
     // The number of events collected
     protected long fNbEvents = 0;
@@ -137,7 +136,7 @@ public abstract class TmfTrace<T extends ITmfEvent> extends TmfEventProvider<T>
         super();
         fCacheSize = (cacheSize > 0) ? cacheSize : DEFAULT_TRACE_CACHE_SIZE;
         fStreamingInterval = interval;
-        fIndexer = (indexer != null) ? indexer : new TmfTraceIndexer(this);
+        fIndexer = (indexer != null) ? indexer : new TmfTraceIndexer(this, fCacheSize);
         initialize(resource, path, type);
     }
 
@@ -382,6 +381,16 @@ public abstract class TmfTrace<T extends ITmfEvent> extends TmfEventProvider<T>
     // ITmfTrace - Read operations (returning an actual event)
     // ------------------------------------------------------------------------
 
+    /* (non-Javadoc)
+     * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#parseEvent(org.eclipse.linuxtools.tmf.core.trace.ITmfContext)
+     */
+    @Override
+    public synchronized ITmfEvent parseEvent(final ITmfContext context) {
+        final ITmfContext tmpContext = context.clone();
+        final ITmfEvent event = getNextEvent(tmpContext);
+        return event;
+    }
+
     /* (non-Javadoc)
      * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#getNextEvent(org.eclipse.linuxtools.tmf.core.trace.ITmfContext)
      */
@@ -390,7 +399,7 @@ public abstract class TmfTrace<T extends ITmfEvent> extends TmfEventProvider<T>
         // parseEvent() does not update the context
         final ITmfEvent event = parseEvent(context);
         if (event != null) {
-            updateIndex(context, context.getRank(), event.getTimestamp());
+            updateAttributes(context, event.getTimestamp());
             context.setLocation(getCurrentLocation());
             context.increaseRank();
             processEvent(event);
@@ -399,16 +408,23 @@ public abstract class TmfTrace<T extends ITmfEvent> extends TmfEventProvider<T>
     }
 
     /**
-     * Hook for special processing by the concrete class (called by
-     * getNextEvent())
+     * Hook for special event processing by the concrete class
+     * (called by TmfTrace.getNextEvent())
      * 
-     * @param event
+     * @param event the event
      */
     protected void processEvent(final ITmfEvent event) {
-        // Do nothing by default
+        // Do nothing
     }
 
-    protected synchronized void updateIndex(final ITmfContext context, final long rank, final ITmfTimestamp timestamp) {
+    /**
+     * Update the trace attributes
+     * 
+     * @param context the current trace context
+     * @param rank
+     * @param timestamp
+     */
+    protected synchronized void updateAttributes(final ITmfContext context, final ITmfTimestamp timestamp) {
         if (fStartTime.compareTo(timestamp, false) > 0) {
             fStartTime = timestamp;
         }
@@ -416,27 +432,21 @@ public abstract class TmfTrace<T extends ITmfEvent> extends TmfEventProvider<T>
             fEndTime = timestamp;
         }
         if (context.hasValidRank()) {
+            long rank = context.getRank();
             if (fNbEvents <= rank) {
                 fNbEvents = rank + 1;
             }
-            // Build the index as we go along
-            if ((rank % fCacheSize) == 0) {
-                // Determine the table position
-                final long position = rank / fCacheSize;
-                // Add new entry at proper location (if empty)
-                if (fCheckpoints.size() == position) {
-                    final ITmfLocation<?> location = context.getLocation().clone();
-                    fCheckpoints.add(new TmfCheckpoint(timestamp.clone(), location));
-                    // System.out.println(getName() + "[" + (fCheckpoints.size() + "] " + timestamp + ", " + location.toString());
-                }
-            }
+            fIndexer.updateIndex(context, timestamp);
         }
     }
 
     // ------------------------------------------------------------------------
-    // TmfProvider
+    // TmfDataProvider
     // ------------------------------------------------------------------------
 
+    /* (non-Javadoc)
+     * @see org.eclipse.linuxtools.tmf.core.component.TmfDataProvider#armRequest(org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest)
+     */
     @Override
     public ITmfContext armRequest(final ITmfDataRequest<T> request) {
         if (request instanceof ITmfEventRequest<?>
@@ -450,12 +460,8 @@ public abstract class TmfTrace<T extends ITmfEvent> extends TmfEventProvider<T>
         return seekEvent(request.getIndex());
     }
 
-    /**
-     * Return the next piece of data based on the context supplied. The context
-     * would typically be updated for the subsequent read.
-     * 
-     * @param context
-     * @return the event referred to by context
+    /* (non-Javadoc)
+     * @see org.eclipse.linuxtools.tmf.core.component.TmfDataProvider#getNext(org.eclipse.linuxtools.tmf.core.trace.ITmfContext)
      */
     @Override
     @SuppressWarnings("unchecked")
@@ -470,6 +476,9 @@ public abstract class TmfTrace<T extends ITmfEvent> extends TmfEventProvider<T>
     // toString
     // ------------------------------------------------------------------------
 
+    /* (non-Javadoc)
+     * @see java.lang.Object#toString()
+     */
     @Override
     @SuppressWarnings("nls")
     public String toString() {
index 8e35d1ab4779f87eeffc2b6b015300878ed20026..65b2f83e65823d080ed02683633901b5390397e2 100644 (file)
@@ -130,7 +130,7 @@ public class TmfTraceIndexer<T extends ITmfTrace<ITmfEvent>> implements ITmfTrac
         // updated as we go by getNextEvent().
         final ITmfEventRequest<ITmfEvent> request = new TmfEventRequest<ITmfEvent>(ITmfEvent.class, TmfTimeRange.ETERNITY,
                 TmfDataRequest.ALL_DATA, fCheckpointInterval, ITmfDataRequest.ExecutionType.BACKGROUND)
-                {
+        {
             ITmfTimestamp startTime = null;
             ITmfTimestamp lastTime = null;
 
@@ -167,16 +167,16 @@ public class TmfTraceIndexer<T extends ITmfTrace<ITmfEvent>> implements ITmfTrac
                     notifyListeners(startTime, lastTime);
                 }
             }
-                };
+        };
 
-                // Submit the request and wait for completion if required
-                fTrace.sendRequest(request);
-                if (waitForCompletion) {
-                    try {
-                        request.waitForCompletion();
-                    } catch (final InterruptedException e) {
-                    }
-                }
+        // Submit the request and wait for completion if required
+        fTrace.sendRequest(request);
+        if (waitForCompletion) {
+            try {
+                request.waitForCompletion();
+            } catch (final InterruptedException e) {
+            }
+        }
     }
 
     private void notifyListeners(final ITmfTimestamp startTime, final ITmfTimestamp endTime) {
@@ -187,8 +187,12 @@ public class TmfTraceIndexer<T extends ITmfTrace<ITmfEvent>> implements ITmfTrac
     // ITmfTraceIndexer - updateIndex
     // ------------------------------------------------------------------------
 
+    /* (non-Javadoc)
+     * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTraceIndexer#updateIndex(org.eclipse.linuxtools.tmf.core.trace.ITmfContext, org.eclipse.linuxtools.tmf.core.event.ITmfTimestamp)
+     */
     @Override
-    public void updateIndex(final ITmfContext context, final long rank, final ITmfTimestamp timestamp) {
+    public synchronized void updateIndex(final ITmfContext context, final ITmfTimestamp timestamp) {
+        final long rank = context.getRank();
         if ((rank % fCheckpointInterval) == 0) {
             // Determine the table position
             final long position = rank / fCheckpointInterval;
@@ -196,7 +200,6 @@ public class TmfTraceIndexer<T extends ITmfTrace<ITmfEvent>> implements ITmfTrac
             if (fTraceIndex.size() == position) {
                 final ITmfLocation<?> location = context.getLocation().clone();
                 fTraceIndex.add(new TmfCheckpoint(timestamp.clone(), location));
-                // System.out.println(getName() + "[" + (fCheckpoints.size() - 1) + "] " + timestamp + ", " + location.toString());
             }
         }
     }
index 3447e2444b69fb4ab16ed215e1c05d9cbcc27c09..11d435a96b97f015806b9bc26cbd0340d76ea34e 100644 (file)
@@ -169,7 +169,7 @@ public class CustomTxtTrace extends TmfTrace<CustomTxtEvent> {
         final ITmfContext savedContext = context.clone();\r
         final TmfEvent event = parseEvent(context);\r
         if (event != null) {\r
-            updateIndex(savedContext, savedContext.getRank(), event.getTimestamp());\r
+            updateAttributes(savedContext, event.getTimestamp());\r
             context.increaseRank();\r
         }\r
         return event;\r
index 9cf7ebb113e76270fda0b0347f2d9bd91b67918a..707fddc7c43a88f1d050515133211f485a09a551 100644 (file)
@@ -171,7 +171,7 @@ public class CustomXmlTrace extends TmfTrace<CustomXmlEvent> {
         final ITmfContext savedContext = context.clone();\r
         final TmfEvent event = parseEvent(context);\r
         if (event != null) {\r
-            updateIndex(savedContext, savedContext.getRank(), event.getTimestamp());\r
+            updateAttributes(savedContext, event.getTimestamp());\r
             context.increaseRank();\r
         }\r
         return event;\r
This page took 0.039456 seconds and 5 git commands to generate.