import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest;
import org.eclipse.linuxtools.tmf.core.request.ITmfEventRequest;
import org.eclipse.linuxtools.tmf.core.request.TmfDataRequest;
-import org.eclipse.linuxtools.tmf.core.request.TmfEventRequest;
/**
* The TMF coalesced event request
* @version 1.0
* @author Francois Chouinard
*/
-public class TmfCoalescedEventRequest<T extends ITmfEvent> extends TmfCoalescedDataRequest<T> implements ITmfEventRequest<T> {
+public class TmfCoalescedEventRequest extends TmfCoalescedDataRequest implements ITmfEventRequest {
// ------------------------------------------------------------------------
// Attributes
*
* @param dataType the requested data type
*/
- public TmfCoalescedEventRequest(Class<T> dataType) {
+ public TmfCoalescedEventRequest(Class<? extends ITmfEvent> dataType) {
this(dataType, TmfTimeRange.ETERNITY, ALL_DATA, DEFAULT_BLOCK_SIZE, ExecutionType.FOREGROUND);
}
* @param dataType the requested data type
* @param priority the requested execution priority
*/
- public TmfCoalescedEventRequest(Class<T> dataType, ExecutionType priority) {
+ public TmfCoalescedEventRequest(Class<? extends ITmfEvent> dataType, ExecutionType priority) {
this(dataType, TmfTimeRange.ETERNITY, ALL_DATA, DEFAULT_BLOCK_SIZE, priority);
}
* @param dataType the requested data type
* @param range the time range of the requested events
*/
- public TmfCoalescedEventRequest(Class<T> dataType, TmfTimeRange range) {
+ public TmfCoalescedEventRequest(Class<? extends ITmfEvent> dataType, TmfTimeRange range) {
this(dataType, range, ALL_DATA, DEFAULT_BLOCK_SIZE, ExecutionType.FOREGROUND);
}
* @param range the time range of the requested events
* @param priority the requested execution priority
*/
- public TmfCoalescedEventRequest(Class<T> dataType, TmfTimeRange range, ExecutionType priority) {
+ public TmfCoalescedEventRequest(Class<? extends ITmfEvent> dataType, TmfTimeRange range, ExecutionType priority) {
this(dataType, range, ALL_DATA, DEFAULT_BLOCK_SIZE, priority);
}
* @param range the time range of the requested events
* @param nbRequested the number of events requested
*/
- public TmfCoalescedEventRequest(Class<T> dataType, TmfTimeRange range, int nbRequested) {
+ public TmfCoalescedEventRequest(Class<? extends ITmfEvent> dataType, TmfTimeRange range, int nbRequested) {
this(dataType, range, nbRequested, DEFAULT_BLOCK_SIZE, ExecutionType.FOREGROUND);
}
* @param nbRequested the number of events requested
* @param priority the requested execution priority
*/
- public TmfCoalescedEventRequest(Class<T> dataType, TmfTimeRange range, int nbRequested, ExecutionType priority) {
+ public TmfCoalescedEventRequest(Class<? extends ITmfEvent> dataType, TmfTimeRange range, int nbRequested, ExecutionType priority) {
this(dataType, range, nbRequested, DEFAULT_BLOCK_SIZE, priority);
}
* @param nbRequested the number of events requested
* @param blockSize the number of events per block
*/
- public TmfCoalescedEventRequest(Class<T> dataType, TmfTimeRange range, int nbRequested, int blockSize) {
+ public TmfCoalescedEventRequest(Class<? extends ITmfEvent> dataType, TmfTimeRange range, int nbRequested, int blockSize) {
this(dataType, range, 0, nbRequested, blockSize, ExecutionType.FOREGROUND);
}
* @param blockSize the number of events per block
* @param priority the requested execution priority
*/
- public TmfCoalescedEventRequest(Class<T> dataType, TmfTimeRange range, int nbRequested, int blockSize, ExecutionType priority) {
+ public TmfCoalescedEventRequest(Class<? extends ITmfEvent> dataType, TmfTimeRange range, int nbRequested, int blockSize, ExecutionType priority) {
this(dataType, range, 0, nbRequested, blockSize, priority);
}
* @param blockSize the number of events per block
* @param priority the requested execution priority
*/
- public TmfCoalescedEventRequest(Class<T> dataType, TmfTimeRange range, long index, int nbRequested, int blockSize, ExecutionType priority) {
+ public TmfCoalescedEventRequest(Class<? extends ITmfEvent> dataType, TmfTimeRange range, long index, int nbRequested, int blockSize, ExecutionType priority) {
super(dataType, index, nbRequested, blockSize, priority);
fRange = range;
// ------------------------------------------------------------------------
@Override
- public void addRequest(ITmfDataRequest<T> request) {
+ public void addRequest(ITmfDataRequest request) {
super.addRequest(request);
- if (request instanceof ITmfEventRequest<?>) {
- merge((ITmfEventRequest<T>) request);
+ if (request instanceof ITmfEventRequest) {
+ merge((ITmfEventRequest) request);
}
}
@Override
- public boolean isCompatible(ITmfDataRequest<T> request) {
- if (request instanceof ITmfEventRequest<?>) {
+ public boolean isCompatible(ITmfDataRequest request) {
+ if (request instanceof ITmfEventRequest) {
if (super.isCompatible(request)) {
- return overlaps((ITmfEventRequest<T>) request);
+ return overlaps((ITmfEventRequest) request);
}
}
return false;
}
- private boolean overlaps(ITmfEventRequest<T> request) {
+ private boolean overlaps(ITmfEventRequest request) {
ITmfTimestamp startTime = request.getRange().getStartTime();
ITmfTimestamp endTime = request.getRange().getEndTime();
return (startTime.compareTo(endTime) <= 0) && (fRange.getStartTime().compareTo(fRange.getEndTime()) <= 0);
}
- private void merge(ITmfEventRequest<T> request) {
+ private void merge(ITmfEventRequest request) {
ITmfTimestamp startTime = request.getRange().getStartTime();
ITmfTimestamp endTime = request.getRange().getEndTime();
if (!fRange.contains(startTime) && fRange.getStartTime().compareTo(startTime) > 0) {
// ------------------------------------------------------------------------
@Override
- public void handleData(T data) {
+ public void handleData(ITmfEvent data) {
super.handleData(data);
- for (ITmfDataRequest<T> request : fRequests) {
+ long index = getIndex() + getNbRead() - 1;
+ for (ITmfDataRequest request : fRequests) {
if (data == null) {
request.handleData(null);
} else {
- if (request instanceof TmfEventRequest<?>) {
- TmfEventRequest<T> req = (TmfEventRequest<T>) request;
- if (!req.isCompleted() && (getNbRead() > request.getIndex())) {
+ long start = request.getIndex();
+ long end = start + request.getNbRequested();
+ if (request instanceof ITmfEventRequest) {
+ ITmfEventRequest req = (ITmfEventRequest) request;
+ if (!req.isCompleted() && index >= start && index < end) {
ITmfTimestamp ts = data.getTimestamp();
if (req.getRange().contains(ts)) {
if (req.getDataType().isInstance(data)) {
}
}
else {
- TmfDataRequest<T> req = (TmfDataRequest<T>) request;
- if (!req.isCompleted()) {
+ TmfDataRequest req = (TmfDataRequest) request;
+ if (!req.isCompleted() && index >= start && index < end) {
if (req.getDataType().isInstance(data)) {
req.handleData(data);
}
@Override
public boolean equals(Object other) {
- if (other instanceof TmfCoalescedEventRequest<?>) {
- TmfCoalescedEventRequest<?> request = (TmfCoalescedEventRequest<?>) other;
+ if (other instanceof TmfCoalescedEventRequest) {
+ TmfCoalescedEventRequest request = (TmfCoalescedEventRequest) other;
return (request.getDataType() == getDataType()) &&
(request.getIndex() == getIndex()) &&
(request.getNbRequested() == getNbRequested()) &&
(request.getRange().equals(getRange()));
}
- if (other instanceof TmfCoalescedDataRequest<?>) {
+ if (other instanceof TmfCoalescedDataRequest) {
return super.equals(other);
}
return false;