Commit | Line | Data |
---|---|---|
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 | 14 | package org.eclipse.linuxtools.tmf.core.component; |
8c8bf09f | 15 | |
5419a136 AM |
16 | import org.eclipse.linuxtools.internal.tmf.core.TmfCoreTracer; |
17 | import org.eclipse.linuxtools.internal.tmf.core.request.TmfCoalescedEventRequest; | |
72f1e62a | 18 | import org.eclipse.linuxtools.tmf.core.event.ITmfEvent; |
5419a136 AM |
19 | import org.eclipse.linuxtools.tmf.core.event.ITmfTimestamp; |
20 | import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest; | |
21 | import org.eclipse.linuxtools.tmf.core.request.ITmfEventRequest; | |
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 | 29 | public 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 | } |