1 /*******************************************************************************
2 * Copyright (c) 2009, 2010 Ericsson
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
10 * Francois Chouinard - Initial API and implementation
11 *******************************************************************************/
13 package org
.eclipse
.linuxtools
.tmf
.component
;
15 import org
.eclipse
.linuxtools
.tmf
.Tracer
;
16 import org
.eclipse
.linuxtools
.tmf
.event
.TmfEvent
;
17 import org
.eclipse
.linuxtools
.tmf
.event
.TmfTimestamp
;
18 import org
.eclipse
.linuxtools
.tmf
.request
.ITmfDataRequest
;
19 import org
.eclipse
.linuxtools
.tmf
.request
.ITmfEventRequest
;
20 import org
.eclipse
.linuxtools
.tmf
.request
.TmfCoalescedEventRequest
;
23 * <b><u>TmfEventProvider</u></b>
25 * Implement me. Please.
27 public abstract class TmfEventProvider
<T
extends TmfEvent
> extends TmfDataProvider
<T
> {
29 public TmfEventProvider(String name
, Class
<T
> type
) {
33 public TmfEventProvider(String name
, Class
<T
> type
, int queueSize
) {
34 super(name
, type
, queueSize
);
37 public TmfEventProvider(TmfEventProvider
<T
> oldProvider
) {
42 public boolean isCompleted(ITmfDataRequest
<T
> request
, T data
, int nbRead
) {
43 boolean requestCompleted
= super.isCompleted(request
, data
, nbRead
);
44 if (!requestCompleted
&& request
instanceof ITmfEventRequest
<?
> && !data
.isNullRef()) {
45 TmfTimestamp endTime
= ((ITmfEventRequest
<?
>) request
).getRange().getEndTime();
46 return data
.getTimestamp().compareTo(endTime
, false) > 0;
48 return requestCompleted
;
52 protected synchronized void newCoalescedDataRequest(ITmfDataRequest
<T
> request
) {
53 if (request
instanceof ITmfEventRequest
<?
>) {
54 ITmfEventRequest
<T
> eventRequest
= (ITmfEventRequest
<T
>) request
;
55 TmfCoalescedEventRequest
<T
> coalescedRequest
=
56 new TmfCoalescedEventRequest
<T
>(fType
, eventRequest
.getRange(), eventRequest
.getNbRequested(), eventRequest
.getExecType());
57 coalescedRequest
.addRequest(eventRequest
);
58 if (Tracer
.isRequestTraced()) {
59 Tracer
.traceRequest(request
, "coalesced with " + coalescedRequest
.getRequestId()); //$NON-NLS-1$
60 Tracer
.traceRequest(coalescedRequest
, "added " + request
.getRequestId()); //$NON-NLS-1$
62 fPendingCoalescedRequests
.add(coalescedRequest
);
65 super.newCoalescedDataRequest(request
);