tmf: Move timestamps to their own package
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.core / src / org / eclipse / linuxtools / tmf / core / component / TmfEventProvider.java
CommitLineData
8c8bf09f 1/*******************************************************************************
96b353c5 2 * Copyright (c) 2009, 2010, 2012 Ericsson
0283f7ff 3 *
8c8bf09f
ASL
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
0283f7ff 8 *
8c8bf09f
ASL
9 * Contributors:
10 * Francois Chouinard - Initial API and implementation
96b353c5 11 * Francois Chouinard - Replace background requests by pre-emptable requests
8c8bf09f
ASL
12 *******************************************************************************/
13
6c13869b 14package org.eclipse.linuxtools.tmf.core.component;
8c8bf09f 15
5419a136
AM
16import org.eclipse.linuxtools.internal.tmf.core.TmfCoreTracer;
17import org.eclipse.linuxtools.internal.tmf.core.request.TmfCoalescedEventRequest;
72f1e62a 18import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
5419a136
AM
19import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest;
20import org.eclipse.linuxtools.tmf.core.request.ITmfEventRequest;
3bd46eef 21import org.eclipse.linuxtools.tmf.core.timestamp.ITmfTimestamp;
8c8bf09f
ASL
22
23/**
8fd82db5 24 * An extension of TmfDataProvider timestamped events providers.
0283f7ff 25 *
8fd82db5 26 * @author Francois Chouinard
96b353c5 27 * @version 1.1
8c8bf09f 28 */
6256d8ad 29public abstract class TmfEventProvider extends TmfDataProvider {
8c8bf09f 30
00641a97
FC
31 // ------------------------------------------------------------------------
32 // Constructors
33 // ------------------------------------------------------------------------
34
063f0d27
AM
35 /**
36 * Default constructor
37 */
12c155f5 38 public TmfEventProvider() {
00641a97 39 super();
12c155f5 40 }
8c8bf09f 41
9c272afc 42 @Override
6256d8ad 43 public void init(String name, Class<? extends ITmfEvent> type) {
3791b5df 44 super.init(name, type);
12c155f5 45 }
8c8bf09f 46
063f0d27
AM
47 /**
48 * Standard constructor
49 *
50 * @param name
51 * The name of the provider
52 * @param type
53 * The type of handled events
54 */
6256d8ad 55 public TmfEventProvider(String name, Class<? extends ITmfEvent> type) {
12c155f5
FC
56 super(name, type);
57 }
58
063f0d27
AM
59 /**
60 * Standard constructor which also sets the queue size
61 *
62 * @param name
63 * The name of the provider
64 * @param type
65 * The type of handled events
66 * @param queueSize
67 * The size of the queue
68 */
6256d8ad 69 public TmfEventProvider(String name, Class<? extends ITmfEvent> type, int queueSize) {
12c155f5
FC
70 super(name, type, queueSize);
71 }
72
063f0d27
AM
73 /**
74 * Copy constructor
75 *
76 * @param other
77 * The other TmfEventProvider to copy
78 */
6256d8ad 79 public TmfEventProvider(TmfEventProvider other) {
00641a97 80 super(other);
12c155f5
FC
81 }
82
00641a97
FC
83 // ------------------------------------------------------------------------
84 // TmfDataProvider
85 // ------------------------------------------------------------------------
86
5419a136
AM
87 @Override
88 public boolean isCompleted(ITmfDataRequest request, ITmfEvent data, int nbRead) {
89 boolean requestCompleted = super.isCompleted(request, data, nbRead);
90 if (!requestCompleted && request instanceof ITmfEventRequest) {
91 ITmfTimestamp endTime = ((ITmfEventRequest) request).getRange().getEndTime();
92 return data.getTimestamp().compareTo(endTime, false) > 0;
93 }
94 return requestCompleted;
95 }
96
97 @Override
98 protected synchronized void newCoalescedDataRequest(ITmfDataRequest request) {
99 if (request instanceof ITmfEventRequest) {
100 ITmfEventRequest eventRequest = (ITmfEventRequest) request;
101 TmfCoalescedEventRequest coalescedRequest = new TmfCoalescedEventRequest(eventRequest.getDataType(), eventRequest.getRange(),
102 eventRequest.getIndex(), eventRequest.getNbRequested(), eventRequest.getBlockSize(), eventRequest.getExecType());
103 coalescedRequest.addRequest(eventRequest);
104 if (TmfCoreTracer.isRequestTraced()) {
105 TmfCoreTracer.traceRequest(request, "COALESCED with " + coalescedRequest.getRequestId()); //$NON-NLS-1$
106 TmfCoreTracer.traceRequest(coalescedRequest, "now contains " + coalescedRequest.getSubRequestIds()); //$NON-NLS-1$
107 }
108 fPendingCoalescedRequests.add(coalescedRequest);
109 } else {
110 super.newCoalescedDataRequest(request);
111 }
112 }
951d134a 113
8c8bf09f 114}
This page took 0.047882 seconds and 5 git commands to generate.