2010-09-17 Francois Chouinard <fchouinard@gmail.com> Contribution for Bug325662
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf / src / org / eclipse / linuxtools / tmf / component / TmfEventProvider.java
CommitLineData
8c8bf09f
ASL
1/*******************************************************************************
2 * Copyright (c) 2009, 2010 Ericsson
3 *
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
8 *
9 * Contributors:
10 * Francois Chouinard - Initial API and implementation
11 *******************************************************************************/
12
13package org.eclipse.linuxtools.tmf.component;
14
9b635e61 15import org.eclipse.linuxtools.tmf.Tracer;
8c8bf09f
ASL
16import org.eclipse.linuxtools.tmf.event.TmfEvent;
17import org.eclipse.linuxtools.tmf.event.TmfTimestamp;
2fb2eb37
FC
18import org.eclipse.linuxtools.tmf.request.ITmfDataRequest;
19import org.eclipse.linuxtools.tmf.request.ITmfEventRequest;
951d134a 20import org.eclipse.linuxtools.tmf.request.TmfCoalescedEventRequest;
8c8bf09f
ASL
21
22/**
23 * <b><u>TmfEventProvider</u></b>
24 * <p>
25 * Implement me. Please.
26 */
27public abstract class TmfEventProvider<T extends TmfEvent> extends TmfDataProvider<T> {
28
ce785d7d
FC
29 public TmfEventProvider(String name, Class<T> type) {
30 super(name, type);
8c8bf09f
ASL
31 }
32
ce785d7d
FC
33 public TmfEventProvider(String name, Class<T> type, int queueSize) {
34 super(name, type, queueSize);
8c8bf09f 35 }
377f1ad8
WB
36
37 public TmfEventProvider(TmfEventProvider<T> oldProvider) {
38 super(oldProvider);
39 }
40
8c8bf09f 41 @Override
2fb2eb37 42 public boolean isCompleted(ITmfDataRequest<T> request, T data, int nbRead) {
f9673903
FC
43 boolean requestCompleted = super.isCompleted(request, data, nbRead);
44 if (!requestCompleted && request instanceof ITmfEventRequest<?> && !data.isNullRef()) {
2fb2eb37 45 TmfTimestamp endTime = ((ITmfEventRequest<?>) request).getRange().getEndTime();
8c8bf09f
ASL
46 return data.getTimestamp().compareTo(endTime, false) > 0;
47 }
f9673903 48 return requestCompleted;
8c8bf09f
ASL
49 }
50
951d134a 51 @Override
2fb2eb37
FC
52 protected synchronized void newCoalescedDataRequest(ITmfDataRequest<T> request) {
53 if (request instanceof ITmfEventRequest<?>) {
54 ITmfEventRequest<T> eventRequest = (ITmfEventRequest<T>) request;
951d134a 55 TmfCoalescedEventRequest<T> coalescedRequest =
f9673903 56 new TmfCoalescedEventRequest<T>(fType, eventRequest.getRange(), eventRequest.getNbRequested(), eventRequest.getExecType());
951d134a 57 coalescedRequest.addRequest(eventRequest);
9b635e61
FC
58 if (Tracer.isRequestTraced()) {
59 Tracer.traceRequest(request, "coalesced with " + coalescedRequest.getRequestId());
60 Tracer.traceRequest(coalescedRequest, "added " + request.getRequestId());
61 }
951d134a
FC
62 fPendingCoalescedRequests.add(coalescedRequest);
63 }
54d55ced
FC
64 else {
65 super.newCoalescedDataRequest(request);
66 }
951d134a
FC
67 }
68
8c8bf09f 69}
This page took 0.029143 seconds and 5 git commands to generate.