Replace location by context in checkpoint indexer
authorFrancois Chouinard <fchouinard@gmail.com>
Mon, 4 Jun 2012 15:41:35 +0000 (11:41 -0400)
committerFrancois Chouinard <fchouinard@gmail.com>
Mon, 4 Jun 2012 15:43:03 +0000 (11:43 -0400)
14 files changed:
org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/trace/TmfCheckpointTest.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/internal/tmf/core/trace/TmfExperimentCheckpoint.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/internal/tmf/core/trace/TmfExperimentContext.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/ctfadaptor/CtfIterator.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/ctfadaptor/CtfLocation.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/ctfadaptor/CtfTmfTrace.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/ITmfCheckpoint.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/ITmfContext.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/TmfCheckpoint.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/TmfCheckpointIndexer.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/TmfContext.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/TmfExperiment.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/TmfTrace.java

index fc786073b5c9b52d80894a24af0b6a9656a000a7..fb0872f01476535eecf73d866e6fd9c9dd4acf53 100644 (file)
@@ -113,8 +113,8 @@ public class TmfCheckpointTest extends TestCase {
             checkpoint1 = new TmfCheckpoint(fTimestamp1, null);
             checkpoint2 = checkpoint1.clone();
             assertEquals("clone", checkpoint1, checkpoint2);
-            assertNull(checkpoint1.getLocation());
-            assertNull(checkpoint2.getLocation());
+            assertNull(checkpoint1.getContext());
+            assertNull(checkpoint2.getContext());
 
             checkpoint1 = new TmfCheckpoint(null, new TmfContext(fLocation1));
             checkpoint3 = checkpoint1.clone();
index 09cd982dc062139fa2b369d497963b09041bd99c..d1032521428b9de82094df7a7ca0e2dd9f68cc46 100644 (file)
@@ -27,7 +27,7 @@ public class TmfExperimentCheckpoint implements Comparable<TmfExperimentCheckpoi
     // ------------------------------------------------------------------------
     
     private final TmfTimestamp fTimestamp;
-    private final TmfContext[] fContexts;
+    private final long[] fRanks;
 
     // ------------------------------------------------------------------------
     // Constructors
@@ -39,7 +39,10 @@ public class TmfExperimentCheckpoint implements Comparable<TmfExperimentCheckpoi
      */
     public TmfExperimentCheckpoint(TmfTimestamp ts, TmfContext[] contexts) {
         fTimestamp = ts;
-        fContexts = contexts;
+        fRanks = new long[contexts.length];
+        for (int i = 0; i < fRanks.length; i++) {
+            fRanks[i] = contexts[i].getRank();
+        }
     }
 
     // ------------------------------------------------------------------------
@@ -54,10 +57,10 @@ public class TmfExperimentCheckpoint implements Comparable<TmfExperimentCheckpoi
     }
 
     /**
-     * @return the checkpoint event stream location
+     * @return the checkpoint event rank
      */
-    public TmfContext[] getContexts() {
-        return fContexts;
+    public long[] getRanks() {
+        return fRanks;
     }
 
     // ------------------------------------------------------------------------
index 17f5548f2cb47bd067e502ff209a9f315a1c0f34..716b9a87b4c4c8317f1399d404c1357281162936 100644 (file)
@@ -55,6 +55,9 @@ public class TmfExperimentContext extends TmfContext implements Cloneable {
     // Constructors
     // ------------------------------------------------------------------------
 
+    /**
+     * @param contexts
+     */
     public TmfExperimentContext(final ITmfContext[] contexts) {
         super();
         fContexts = contexts;
@@ -74,6 +77,9 @@ public class TmfExperimentContext extends TmfContext implements Cloneable {
         fLastTraceRead = NO_TRACE;
     }
 
+    /**
+     * @param other
+     */
     public TmfExperimentContext(final TmfExperimentContext other) {
         this(other.cloneContexts());
         fEvents = other.fEvents;
@@ -83,30 +89,33 @@ public class TmfExperimentContext extends TmfContext implements Cloneable {
         setLastTrace(other.fLastTraceRead);
     }
 
+    /* (non-Javadoc)
+     * @see org.eclipse.linuxtools.tmf.core.trace.TmfContext#clone()
+     */
+    @Override
+    public TmfExperimentContext clone() {
+        TmfExperimentContext clone = null;
+        clone = (TmfExperimentContext) super.clone();
+        clone.fContexts = cloneContexts();
+        clone.fEvents = cloneEvents();
+        clone.fLastTraceRead = fLastTraceRead;
+        return clone;
+    }
+
     private ITmfContext[] cloneContexts() {
         final ITmfContext[] contexts = new ITmfContext[fContexts.length];
         for (int i = 0; i < fContexts.length; i++)
-            contexts[i] = fContexts[i].clone();
+            contexts[i] = (fContexts[i] != null) ? fContexts[i].clone() : null;
         return contexts;
     }
 
     private ITmfEvent[] cloneEvents() {
         final ITmfEvent[] events = new ITmfEvent[fEvents.length];
         for (int i = 0; i < fEvents.length; i++)
-            events[i] = fEvents[i].clone();
+            events[i] = (fEvents[i] != null) ? fEvents[i].clone() : null;
         return events;
     }
 
-    @Override
-    public TmfExperimentContext clone2() {
-        TmfExperimentContext clone = null;
-        clone = (TmfExperimentContext) super.clone();
-        clone.fContexts = cloneContexts();
-        clone.fEvents = cloneEvents();
-        clone.fLastTraceRead = NO_TRACE;
-        return clone;
-    }
-
     // ------------------------------------------------------------------------
     // Accessors
     // ------------------------------------------------------------------------
index f563f6d8d36d1f1b3d44df3c24e3dc2bef164333..da89f911c88a5310ab4978a15a4a3497a741637a 100644 (file)
@@ -273,8 +273,9 @@ public abstract class TmfDataProvider<T extends ITmfEvent> extends TmfComponent
                     if (Tracer.isRequestTraced())
                         Tracer.traceRequest(request, "read first event"); //$NON-NLS-1$
                     while (data != null && !isCompleted(request, data, nbRead)) {
-//                        if (fLogData)
-//                            Tracer.traceEvent(provider, request, data);
+                        if (fLogData) { 
+                            Tracer.traceEvent(provider, request, data);
+                        }
                         if (request.getDataType().isInstance(data)) {
                             request.handleData(data);
                         }
index f688f9d7a7d0aa60252e4f3fedb454cf8c138ac4..a2f57ab297a8e33dc8a8d5e3c2f5dde82e43ce4d 100644 (file)
@@ -152,19 +152,10 @@ public class CtfIterator extends CTFTraceReader implements ITmfContext, Comparab
     @Override
     public CtfIterator clone() {
         CtfIterator clone = null;
-        clone = new CtfIterator(ctfTmfTrace, this.getCurrentEvent()
-                .getTimestampValue(), curRank);
+        clone = new CtfIterator(ctfTmfTrace, this.getCurrentEvent().getTimestampValue(), curRank);
         return clone;
     }
 
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.trace.ITmfContext#clone2()
-     */
-    @Override
-    public CtfIterator clone2() {
-        return clone();
-    }
-
     /**
      * Method dispose.
      * @see org.eclipse.linuxtools.tmf.core.trace.ITmfContext#dispose()
index fcb2b2bf407427b44c153b7bb00f9df4e7d19bc2..d87c413f5986f8da8ffa82ac1c62a5c9bf834cad 100644 (file)
@@ -64,7 +64,7 @@ public class CtfLocation implements ITmfLocation<Long>, Cloneable {
      */
     @Override
     public CtfLocation clone() {
-        return new CtfLocation(getLocation());
+        return new CtfLocation(getLocation().longValue());
     }
 
     /* (non-Javadoc)
index be3f94d45792899f06e4a2e407a6d41bccbd3b9c..02ef51d97b82bb096f457979235f0b666155e443 100644 (file)
@@ -315,7 +315,7 @@ public class CtfTmfTrace extends TmfTrace<CtfTmfEvent> implements ITmfEventParse
     public CtfTmfEvent parseEvent(ITmfContext context) {
         CtfTmfEvent event = null;
         if( context instanceof CtfIterator ){
-            CtfIterator itt = (CtfIterator) context;
+            CtfIterator itt = (CtfIterator) context.clone();
             event = itt.getCurrentEvent();
         }
         return event;
index aaead0c17422e691e1f48567d197be9f4544ebbf..6eda5c7295e29e4da6a879249a3e74ae59b42455 100644 (file)
@@ -36,7 +36,7 @@ public interface ITmfCheckpoint extends Comparable<ITmfCheckpoint> {
     public ITmfTimestamp getTimestamp();
 
     /**
-     * @return the trace context 
+     * @return the location of the event referred to by the context
      */
     public ITmfContext getContext();
 
index 1d78bb6998d9f2da854e990fc864ad122439f6dd..62d2c1bf76199ab83ada6f8cd3b8be46a61f9c86 100644 (file)
@@ -85,9 +85,9 @@ public interface ITmfContext {
      */
     public ITmfContext clone();
 
-    /**
-     * @return a clone of the context
-     */
-    public ITmfContext clone2();
+//    /**
+//     * @return a clone of the context
+//     */
+//    public ITmfContext clone2();
 
 }
index f74391e17825cf925dbc3916d287cb8b26f9c884..9740dac623ebec364ce96c35455193d55113e358 100644 (file)
@@ -107,16 +107,15 @@ public class TmfCheckpoint implements ITmfCheckpoint, Cloneable {
      * @see org.eclipse.linuxtools.tmf.core.trace.ITmfCheckpoint#getLocation()
      */
     @Override
-    public ITmfLocation<?> getLocation() {
-        return (fContext != null) ? fContext.getLocation() : null;
+    public ITmfContext getContext() {
+        return fContext;
     }
 
     /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.trace.ITmfCheckpoint#getContext()
+     * @see org.eclipse.linuxtools.tmf.core.trace.ITmfCheckpoint#getLocation()
      */
-    @Override
-    public ITmfContext getContext() {
-        return fContext;
+    public ITmfLocation<? extends Comparable<?>> getLocation() {
+        return fContext.getLocation();
     }
 
     // ------------------------------------------------------------------------
@@ -133,7 +132,7 @@ public class TmfCheckpoint implements ITmfCheckpoint, Cloneable {
     @SuppressWarnings({ "unchecked", "rawtypes" })
     public int compareTo(final ITmfCheckpoint other) {
         if (fTimestamp == null || other.getTimestamp() == null) {
-            final Comparable location1 = fContext.getLocation().getLocation();
+            final Comparable location1 = getLocation().getLocation();
             final Comparable location2 = other.getLocation().getLocation();
             return location1.compareTo(location2);
         }
index cb8de737ec6c2ef32ba1e02da675ddc8f8c2e73c..f2b4688c3913f3f7d1576e5cdc68f0fd9dea5e09 100644 (file)
@@ -245,7 +245,7 @@ public class TmfCheckpointIndexer<T extends ITmfTrace<ITmfEvent>> implements ITm
             final long position = rank / fCheckpointInterval;
             // Add new entry at proper location (if empty)
             if (fTraceIndex.size() == position) {
-                fTraceIndex.add(new TmfCheckpoint(timestamp.clone(), context.clone2()));
+                fTraceIndex.add(new TmfCheckpoint(timestamp.clone(), context.clone()));
             }
         }
     }
@@ -275,7 +275,7 @@ public class TmfCheckpointIndexer<T extends ITmfTrace<ITmfEvent>> implements ITm
         }
 
         // Position the trace at the checkpoint
-        return seekCheckpoint(index);
+        return restoreCheckpoint(index);
     }
 
     /* (non-Javadoc)
@@ -293,7 +293,7 @@ public class TmfCheckpointIndexer<T extends ITmfTrace<ITmfEvent>> implements ITm
         final int index = (int) rank / fCheckpointInterval;
 
         // Position the trace at the checkpoint
-        return seekCheckpoint(index);
+        return restoreCheckpoint(index);
     }
 
     /**
@@ -302,7 +302,7 @@ public class TmfCheckpointIndexer<T extends ITmfTrace<ITmfEvent>> implements ITm
      * @param checkpoint the checkpoint index
      * @return the corresponding context
      */
-    private ITmfContext seekCheckpoint(final int checkpoint) {
+    private ITmfContext restoreCheckpoint(final int checkpoint) {
         ITmfLocation<?> location = null;
         int index = 0;
         synchronized (fTraceIndex) {
@@ -311,9 +311,7 @@ public class TmfCheckpointIndexer<T extends ITmfTrace<ITmfEvent>> implements ITm
                 if (index >= fTraceIndex.size()) {
                     index = fTraceIndex.size() - 1;
                 }
-                final ITmfContext context = fTraceIndex.get(index).getContext().clone2();
-//                fTrace.seekEvent(context.getLocation());
-                return context;
+                return fTraceIndex.get(index).getContext().clone();
             }
         }
         final ITmfContext context = fTrace.seekEvent(location);
index f8efb047bc601029cc33fce5abe2d2d8c67e0d29..add489ddcc916a984780c8e6d42044e972c4f2b0 100644 (file)
@@ -99,14 +99,6 @@ public class TmfContext implements ITmfContext, Cloneable {
         return clone;
     }
 
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.trace.ITmfContext#clone2()
-     */
-    @Override
-    public TmfContext clone2() {
-        return clone();
-    }
-
     // ------------------------------------------------------------------------
     // ITmfContext
     // ------------------------------------------------------------------------
index fa06bd49fa8f1683a54bd8f1cbb5794d082c924a..15698f92f14e0b47f98f53c6e6fd50bc3f94dfc1 100644 (file)
@@ -231,7 +231,7 @@ public class TmfExperiment<T extends ITmfEvent> extends TmfTrace<T> implements I
     // ------------------------------------------------------------------------
 
     @Override
-    protected ITmfContext armRequest(final ITmfDataRequest<T> request) {
+    protected synchronized ITmfContext armRequest(final ITmfDataRequest<T> request) {
         if (request instanceof ITmfEventRequest<?>
             && !TmfTimestamp.BIG_BANG.equals(((ITmfEventRequest<T>) request).getRange().getStartTime())
             && request.getIndex() == 0)
@@ -335,40 +335,26 @@ public class TmfExperiment<T extends ITmfEvent> extends TmfTrace<T> implements I
     // ------------------------------------------------------------------------
 
     /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.trace.TmfTrace#getNext(org.eclipse.linuxtools.tmf.core.trace.ITmfContext)
+     * @see org.eclipse.linuxtools.tmf.core.trace.ITmfEventParser#parseEvent(org.eclipse.linuxtools.tmf.core.trace.ITmfContext)
      */
     @Override
-    public synchronized T getNext(final ITmfContext context) {
-        final ITmfContext previousContext = context.clone();
-        final T event = parseEvent(context);
-        if (event != null) {
-            updateAttributes(previousContext, event.getTimestamp());
-
-            fExperimentContext = (TmfExperimentContext) context;
-            int trace = fExperimentContext.getLastTrace();
-            if (trace != TmfExperimentContext.NO_TRACE) {
-                TmfExperimentLocation location = (TmfExperimentLocation) fExperimentContext.getLocation();
-                location.getLocation().getLocations()[trace] = fExperimentContext.getContexts()[trace].getLocation();
-            }
-            
-            context.increaseRank();
-            processEvent(event);
-        }
+    public synchronized T parseEvent(final ITmfContext context) {
+        final ITmfContext savedContext = context.clone();
+        final T event = getNext(savedContext);
         return event;
     }
 
     /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.trace.ITmfEventParser#parseEvent(org.eclipse.linuxtools.tmf.core.trace.ITmfContext)
+     * @see org.eclipse.linuxtools.tmf.core.trace.TmfTrace#getNext(org.eclipse.linuxtools.tmf.core.trace.ITmfContext)
      */
     @SuppressWarnings("unchecked")
     @Override
-    public T parseEvent(ITmfContext context) {
+    public synchronized T getNext(ITmfContext context) {
 
         // Validate the context
         if (!(context instanceof TmfExperimentContext)) {
             return null; // Throw an exception?
         }
-
         TmfExperimentContext expContext = (TmfExperimentContext) context;
 
         // If an event was consumed previously, first get the next one from that trace
@@ -396,9 +382,17 @@ public class TmfExperiment<T extends ITmfEvent> extends TmfTrace<T> implements I
         T event = null;
         if (trace != TmfExperimentContext.NO_TRACE) {
             event = (T) expContext.getEvents()[trace];
+            if (event != null) {
+                updateAttributes(expContext, event.getTimestamp());
+                TmfExperimentLocation location = (TmfExperimentLocation) expContext.getLocation();
+                location.getLocation().getLocations()[trace] = expContext.getContexts()[trace].getLocation();
+                expContext.increaseRank();
+                expContext.setLastTrace(trace);
+                fExperimentContext = expContext;
+                processEvent(event);
+            }
         }
 
-        expContext.setLastTrace(trace);
         return event;
     }
 
index 3303c6ba8b8956325a0d37a3b889299b6beff4d6..c308b92622ed870577d52d49eec468bd00be3668 100644 (file)
@@ -459,6 +459,11 @@ public abstract class TmfTrace<T extends ITmfEvent> extends TmfEventProvider<T>
                 event = getNext(context);
             }
         }
+//        System.out.println("seekEvent() before parseEvent() context=" + context);
+//        ITmfEvent event = fParser.parseEvent(context);
+//        System.out.println("seekEvent() after parseEvent() context=" + context + " TS=" + event.getTimestamp());
+//        event = fParser.parseEvent(context);
+//        System.out.println("seekEvent() after parseEvent() context=" + context + " TS=" + event.getTimestamp());
         return context;
     }
 
@@ -476,14 +481,13 @@ public abstract class TmfTrace<T extends ITmfEvent> extends TmfEventProvider<T>
         }
 
         // Position the trace at the checkpoint
-        final ITmfContext context = fIndexer.seekIndex(timestamp);
+        ITmfContext context = fIndexer.seekIndex(timestamp);
 
         // And locate the requested event context
         final ITmfContext nextEventContext = context.clone(); // Must use clone() to get the right subtype...
         ITmfEvent event = getNext(nextEventContext);
         while (event != null && event.getTimestamp().compareTo(timestamp, false) < 0) {
-            context.setLocation(nextEventContext.getLocation().clone());
-            context.increaseRank();
+            context = nextEventContext.clone();
             event = getNext(nextEventContext);
         }
         if (event == null) {
This page took 0.037274 seconds and 5 git commands to generate.