import org.eclipse.linuxtools.tmf.event.TmfTimestamp;
import org.eclipse.linuxtools.tmf.request.ITmfDataRequest;
import org.eclipse.linuxtools.tmf.request.ITmfEventRequest;
-import org.eclipse.linuxtools.tmf.request.TmfDataRequest;
-import org.eclipse.linuxtools.tmf.request.TmfEventRequest;
-import org.eclipse.linuxtools.tmf.request.ITmfDataRequest.ExecutionType;
-import org.eclipse.linuxtools.tmf.signal.TmfSignalHandler;
-import org.eclipse.linuxtools.tmf.signal.TmfTraceOpenedSignal;
-import org.eclipse.linuxtools.tmf.signal.TmfTraceUpdatedSignal;
/**
* <b><u>TmfTrace</u></b>
// Indexing
// ------------------------------------------------------------------------
- /*
- * The purpose of the index is to keep the information needed to rapidly
- * restore the traces contexts at regular intervals (every INDEX_PAGE_SIZE
- * event).
- */
-
- @SuppressWarnings("unchecked")
- private void indexTrace(boolean waitForCompletion) {
-
- fCheckpoints.clear();
-
- ITmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, TmfTimeRange.Eternity, TmfDataRequest.ALL_DATA, 1, ITmfDataRequest.ExecutionType.BACKGROUND) {
-
- TmfTimestamp startTime = null;
- TmfTimestamp lastTime = null;
-
- @Override
- public void handleData() {
- TmfEvent[] events = getData();
- if (events.length > 0) {
- TmfTimestamp ts = events[0].getTimestamp();
- if (startTime == null) {
- startTime = new TmfTimestamp(ts);
- fStartTime = startTime;
- }
- lastTime = new TmfTimestamp(ts);
-
- if ((fNbRead % DEFAULT_INDEX_PAGE_SIZE) == 0) {
- updateTraceData();
- }
- }
- }
-
- @Override
- public void handleSuccess() {
- updateTraceData();
- }
-
- private void updateTraceData() {
- if (fNbRead != 0) {
- fEndTime = new TmfTimestamp(lastTime);
- fNbEvents = fNbRead;
- notifyListeners();
- }
- }
- };
-
- sendRequest((ITmfDataRequest<T>) request);
- if (waitForCompletion)
- try {
- request.waitForCompletion();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
+// /*
+// * The purpose of the index is to keep the information needed to rapidly
+// * restore the traces contexts at regular intervals (every INDEX_PAGE_SIZE
+// * event).
+// */
+//
+// @SuppressWarnings({ "unchecked", "unused" })
+// private void indexTrace(boolean waitForCompletion) {
+//
+// fCheckpoints.clear();
+//
+// ITmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, TmfTimeRange.Eternity, TmfDataRequest.ALL_DATA, 1, ITmfDataRequest.ExecutionType.BACKGROUND) {
+//
+// TmfTimestamp startTime = null;
+// TmfTimestamp lastTime = null;
+//
+// @Override
+// public void handleData() {
+// TmfEvent[] events = getData();
+// if (events.length > 0) {
+// TmfTimestamp ts = events[0].getTimestamp();
+// if (startTime == null) {
+// startTime = new TmfTimestamp(ts);
+// fStartTime = startTime;
+// }
+// lastTime = new TmfTimestamp(ts);
+//
+// if ((fNbRead % DEFAULT_INDEX_PAGE_SIZE) == 0) {
+// updateTraceData();
+// }
+// }
+// }
+//
+// @Override
+// public void handleSuccess() {
+// updateTraceData();
+// }
+//
+// private void updateTraceData() {
+// if (fNbRead != 0) {
+// fEndTime = new TmfTimestamp(lastTime);
+// fNbEvents = fNbRead;
+// notifyListeners();
+// }
+// }
+// };
+//
+// sendRequest((ITmfDataRequest<T>) request);
+// if (waitForCompletion)
+// try {
+// request.waitForCompletion();
+// } catch (InterruptedException e) {
+// e.printStackTrace();
+// }
+// }
- protected void notifyListeners() {
- broadcast(new TmfTraceUpdatedSignal(this, this, new TmfTimeRange(fStartTime, fEndTime)));
- }
+// protected void notifyListeners() {
+// broadcast(new TmfTraceUpdatedSignal(this, this, new TmfTimeRange(fStartTime, fEndTime)));
+// }
// ------------------------------------------------------------------------
// TmfDataProvider
// ------------------------------------------------------------------------
- @Override
- protected void queueBackgroundRequest(final ITmfDataRequest<T> request, final int blockSize, final boolean indexing) {
-
- // TODO: Handle the data requests also...
- if (!(request instanceof ITmfEventRequest<?>)) {
- super.queueRequest(request);
- return;
- }
- final ITmfEventRequest<T> eventRequest = (ITmfEventRequest<T>) request;
-
- Thread thread = new Thread() {
- @Override
- public void run() {
-
-// final long requestStart = System.nanoTime();
-
- final Integer[] CHUNK_SIZE = new Integer[1];
- CHUNK_SIZE[0] = blockSize + ((indexing) ? 1 : 0);
-
- final Integer[] nbRead = new Integer[1];
- nbRead[0] = 0;
-
-// final TmfTimestamp[] timestamp = new TmfTimestamp[1];
-// timestamp[0] = new TmfTimestamp(eventRequest.getRange().getStartTime());
-// final TmfTimestamp endTS = eventRequest.getRange().getEndTime();
-
- final Boolean[] isFinished = new Boolean[1];
- isFinished[0] = Boolean.FALSE;
-
- while (!isFinished[0]) {
-
-// TmfEventRequest<T> subRequest = new TmfEventRequest<T>(eventRequest.getDataType(), new TmfTimeRange(timestamp[0], endTS), CHUNK_SIZE[0], eventRequest.getBlockize(), ExecutionType.BACKGROUND)
- TmfDataRequest<T> subRequest = new TmfDataRequest<T>(eventRequest.getDataType(), nbRead[0], CHUNK_SIZE[0], eventRequest.getBlockize(), ExecutionType.BACKGROUND)
- {
-// int count = 0;
- @Override
- public void handleData() {
- T[] data = getData();
-// timestamp[0] = data[data.length-1].getTimestamp();
-// if (count == 0) {
-// System.out.println("First event of the block: " + data[0].getTimestamp());
-// }
-// count++;
-// Tracer.trace("Ndx: " + ((TmfEvent) data[0]).getTimestamp());
- eventRequest.setData(data);
- eventRequest.handleData();
- if (fNbRead == CHUNK_SIZE[0]) {
- nbRead[0] += fNbRead;
-// System.out.println("fNbRead=" + fNbRead + ", count=" + count +", total=" + nbRead[0] + ", TS=" + data[0].getTimestamp());
- }
- if (fNbRead > CHUNK_SIZE[0]) {
- System.out.println("ERROR - Read too many events");
- }
- }
- @Override
- public void handleCompleted() {
-// System.out.println("Request completed at: " + timestamp[0]);
- if (fNbRead < CHUNK_SIZE[0]) {
- eventRequest.done();
- isFinished[0] = Boolean.TRUE;
- nbRead[0] += fNbRead;
-// System.out.println("fNbRead=" + fNbRead + ", count=" + count +", total=" + nbRead[0]);
- }
- super.handleCompleted();
- }
- };
-
- if (!isFinished[0]) {
- queueRequest(subRequest);
-
- try {
- subRequest.waitForCompletion();
-// System.out.println("Finished at " + timestamp[0]);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
-
-// TmfTimestamp newTS = new TmfTimestamp(timestamp[0].getValue() + 1, timestamp[0].getScale(), timestamp[0].getPrecision());
-// timestamp[0] = newTS;
- CHUNK_SIZE[0] = blockSize;
-// System.out.println("New timestamp: " + timestamp[0]);
- }
- }
-// final long requestEnded = System.nanoTime();
-// System.out.println("Background request completed. Elapsed= " + (requestEnded * 1.0 - requestStart) / 1000000000);
- }
- };
-
- thread.start();
- }
-
- // ------------------------------------------------------------------------
- // Signal handlers
- // ------------------------------------------------------------------------
-
- @TmfSignalHandler
- public void traceOpened(TmfTraceOpenedSignal signal) {
- ITmfTrace trace = signal.getTrace();
- if (trace == this) {
- indexTrace(false);
- }
- }
+// @Override
+// protected void queueBackgroundRequest(final ITmfDataRequest<T> request, final int blockSize, final boolean adjust) {
+// super.queueBackgroundRequest(request, fIndexPageSize, true);
+// }
}