X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=org.eclipse.linuxtools.tmf.core%2Fsrc%2Forg%2Feclipse%2Flinuxtools%2Ftmf%2Fcore%2Fctfadaptor%2FCtfIterator.java;h=8311e7acb8fc351abd3183feab786cb491110e6f;hb=b6220b93a649a550ce808b03d2b5e180d3a83e57;hp=6e981c3b9315a87ce2c8e809e33245fd134be89b;hpb=5976d44afa5254d1cd4f84f4ed68529a92ae151f;p=deliverable%2Ftracecompass.git diff --git a/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/ctfadaptor/CtfIterator.java b/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/ctfadaptor/CtfIterator.java index 6e981c3b93..8311e7acb8 100644 --- a/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/ctfadaptor/CtfIterator.java +++ b/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/ctfadaptor/CtfIterator.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012 Ericsson + * Copyright (c) 2012, 2013 Ericsson * * All rights reserved. This program and the accompanying materials are made * available under the terms of the Eclipse Public License v1.0 which @@ -25,7 +25,7 @@ import org.eclipse.linuxtools.tmf.core.trace.ITmfLocation; * @author Matthew Khouzam */ public class CtfIterator extends CTFTraceReader implements ITmfContext, - Comparable, Cloneable { + Comparable { private final CtfTmfTrace ctfTmfTrace; @@ -72,7 +72,7 @@ public class CtfIterator extends CTFTraceReader implements ITmfContext, * @since 2.0 */ public CtfIterator(final CtfTmfTrace trace, - final CtfLocationData ctfLocationData, final long rank) { + final CtfLocationInfo ctfLocationData, final long rank) { super(trace.getCTFTrace()); this.ctfTmfTrace = trace; @@ -101,14 +101,19 @@ public class CtfIterator extends CTFTraceReader implements ITmfContext, * @return CtfTmfEvent */ public CtfTmfEvent getCurrentEvent() { - final StreamInputReader top = super.prio.peek(); + final StreamInputReader top = super.getPrio().peek(); if (top != null) { - return new CtfTmfEvent(top.getCurrentEvent(), top.getFilename(), - ctfTmfTrace); + return CtfTmfEventFactory.createEvent(top.getCurrentEvent(), + top.getFilename(), ctfTmfTrace); } return null; } + @Override + public boolean seek(long timestamp) { + return seek(new CtfLocationInfo(timestamp, 0)); + } + /** * Seek this iterator to a given location. * @@ -117,7 +122,7 @@ public class CtfIterator extends CTFTraceReader implements ITmfContext, * @return boolean * @since 2.0 */ - public boolean seek(final CtfLocationData ctfLocationData) { + public synchronized boolean seek(final CtfLocationInfo ctfLocationData) { boolean ret = false; /* Adjust the timestamp depending on the trace's offset */ @@ -134,11 +139,12 @@ public class CtfIterator extends CTFTraceReader implements ITmfContext, * assign the location index correctly */ long index = 0; - if (this.getCurrentEvent() != null) { - currTimestamp = this.getCurrentEvent().getTimestamp().getValue(); + final CtfTmfEvent currentEvent = this.getCurrentEvent(); + if (currentEvent != null) { + currTimestamp = currentEvent.getTimestamp().getValue(); for (long i = 0; i < ctfLocationData.getIndex(); i++) { - if (currTimestamp == this.getCurrentEvent().getTimestamp().getValue()) { + if (currTimestamp == currentEvent.getTimestamp().getValue()) { index++; } else { index = 0; @@ -150,7 +156,7 @@ public class CtfIterator extends CTFTraceReader implements ITmfContext, } /* Seek the current location accordingly */ if (ret) { - curLocation.setLocation(new CtfLocationData(getCurrentEvent().getTimestamp().getValue(), index)); + curLocation = new CtfLocation(new CtfLocationInfo(getCurrentEvent().getTimestamp().getValue(), index)); } else { curLocation = NULL_LOCATION; } @@ -177,11 +183,6 @@ public class CtfIterator extends CTFTraceReader implements ITmfContext, curRank = rank; } - /* - * (non-Javadoc) - * - * @see org.eclipse.linuxtools.tmf.core.trace.TmfContext#clone() - */ @Override public CtfIterator clone() { CtfIterator clone = null; @@ -195,8 +196,7 @@ public class CtfIterator extends CTFTraceReader implements ITmfContext, */ @Override public void dispose() { - // FIXME add dispose() stuff to CTFTrace and call it here... - + super.dispose(); } /** @@ -247,7 +247,7 @@ public class CtfIterator extends CTFTraceReader implements ITmfContext, * @return boolean successful or not */ @Override - public boolean advance() { + public synchronized boolean advance() { long index = curLocation.getLocationInfo().getIndex(); long timestamp = curLocation.getLocationInfo().getTimestamp(); boolean ret = super.advance(); @@ -255,9 +255,9 @@ public class CtfIterator extends CTFTraceReader implements ITmfContext, if (ret) { final long timestampValue = getCurrentEvent().getTimestamp().getValue(); if (timestamp == timestampValue) { - curLocation.setLocation(timestampValue, index + 1); + curLocation = new CtfLocation(timestampValue, index + 1); } else { - curLocation.setLocation(timestampValue, 0L); + curLocation = new CtfLocation(timestampValue, 0L); } } else { curLocation = NULL_LOCATION; @@ -280,9 +280,6 @@ public class CtfIterator extends CTFTraceReader implements ITmfContext, return 0; } - /* (non-Javadoc) - * @see java.lang.Object#hashCode() - */ @Override public int hashCode() { final int prime = 31; @@ -295,9 +292,6 @@ public class CtfIterator extends CTFTraceReader implements ITmfContext, return result; } - /* (non-Javadoc) - * @see java.lang.Object#equals(java.lang.Object) - */ @Override public boolean equals(Object obj) { if (this == obj) {