/*******************************************************************************
- * Copyright (c) 2009, 2010 Ericsson
+ * Copyright (c) 2009, 2013 Ericsson
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License v1.0 which
* @version 1.0
* @author Francois Chouinard
*/
-public class TmfCoalescedDataRequest<T extends ITmfEvent> extends TmfDataRequest<T> {
+public class TmfCoalescedDataRequest extends TmfDataRequest {
// ------------------------------------------------------------------------
// Attributes
/**
* The list of coalesced requests
*/
- protected Vector<ITmfDataRequest<T>> fRequests = new Vector<ITmfDataRequest<T>>();
+ protected Vector<ITmfDataRequest> fRequests = new Vector<ITmfDataRequest>();
// ------------------------------------------------------------------------
// Constructor
*
* @param dataType the requested data type
*/
- public TmfCoalescedDataRequest(Class<T> dataType) {
+ public TmfCoalescedDataRequest(Class<? extends ITmfEvent> dataType) {
this(dataType, 0, ALL_DATA, DEFAULT_BLOCK_SIZE, ExecutionType.FOREGROUND);
}
* @param dataType the requested data type
* @param priority the requested execution priority
*/
- public TmfCoalescedDataRequest(Class<T> dataType, ExecutionType priority) {
+ public TmfCoalescedDataRequest(Class<? extends ITmfEvent> dataType, ExecutionType priority) {
this(dataType, 0, ALL_DATA, DEFAULT_BLOCK_SIZE, priority);
}
* @param dataType the requested data type
* @param index the index of the first event to retrieve
*/
- public TmfCoalescedDataRequest(Class<T> dataType, long index) {
+ public TmfCoalescedDataRequest(Class<? extends ITmfEvent> dataType, long index) {
this(dataType, index, ALL_DATA, DEFAULT_BLOCK_SIZE, ExecutionType.FOREGROUND);
}
* @param index the index of the first event to retrieve
* @param priority the requested execution priority
*/
- public TmfCoalescedDataRequest(Class<T> dataType, long index, ExecutionType priority) {
+ public TmfCoalescedDataRequest(Class<? extends ITmfEvent> dataType, long index, ExecutionType priority) {
this(dataType, index, ALL_DATA, DEFAULT_BLOCK_SIZE, priority);
}
* @param index the index of the first event to retrieve
* @param nbRequested the number of events requested
*/
- public TmfCoalescedDataRequest(Class<T> dataType, long index, int nbRequested) {
+ public TmfCoalescedDataRequest(Class<? extends ITmfEvent> dataType, long index, int nbRequested) {
this(dataType, index, nbRequested, DEFAULT_BLOCK_SIZE, ExecutionType.FOREGROUND);
}
* @param nbRequested the number of events requested
* @param priority the requested execution priority
*/
- public TmfCoalescedDataRequest(Class<T> dataType, long index, int nbRequested, ExecutionType priority) {
+ public TmfCoalescedDataRequest(Class<? extends ITmfEvent> dataType, long index, int nbRequested, ExecutionType priority) {
this(dataType, index, nbRequested, DEFAULT_BLOCK_SIZE, priority);
}
* @param nbRequested the number of events requested
* @param blockSize the number of events per block
*/
- public TmfCoalescedDataRequest(Class<T> dataType, long index, int nbRequested, int blockSize) {
- super(dataType, index, nbRequested, blockSize, ExecutionType.FOREGROUND);
+ public TmfCoalescedDataRequest(Class<? extends ITmfEvent> dataType, long index, int nbRequested, int blockSize) {
+ super(ITmfEvent.class, index, nbRequested, blockSize, ExecutionType.FOREGROUND);
}
/**
* @param blockSize the number of events per block
* @param priority the requested execution priority
*/
- public TmfCoalescedDataRequest(Class<T> dataType, long index, int nbRequested, int blockSize, ExecutionType priority) {
- super(dataType, index, nbRequested, blockSize, priority);
+ public TmfCoalescedDataRequest(Class<? extends ITmfEvent> dataType, long index, int nbRequested, int blockSize, ExecutionType priority) {
+ super(ITmfEvent.class, index, nbRequested, blockSize, priority);
}
// ------------------------------------------------------------------------
*
* @param request The request to add
*/
- public void addRequest(ITmfDataRequest<T> request) {
+ public void addRequest(ITmfDataRequest request) {
fRequests.add(request);
merge(request);
}
* The request to verify
* @return If the request is compatible, true or false
*/
- public boolean isCompatible(ITmfDataRequest<T> request) {
+ public boolean isCompatible(ITmfDataRequest request) {
if (request.getExecType() == getExecType()) {
return overlaps(request);
}
return false;
}
- private boolean overlaps(ITmfDataRequest<T> request) {
+ private boolean overlaps(ITmfDataRequest request) {
long start = request.getIndex();
long end = start + request.getNbRequested();
return (start <= (fIndex + fNbRequested + 1) && (end >= fIndex - 1));
}
- private void merge(ITmfDataRequest<T> request) {
+ private void merge(ITmfDataRequest request) {
long start = request.getIndex();
long end = Math.min(start + request.getNbRequested(), TmfDataRequest.ALL_DATA);
// ------------------------------------------------------------------------
@Override
- public void handleData(T data) {
+ public void handleData(ITmfEvent data) {
super.handleData(data);
// Don't call sub-requests handleData() unless this is a
// TmfCoalescedDataRequest; extended classes should call
// the sub-requests handleData().
if (getClass() == TmfCoalescedDataRequest.class) {
- long index = getIndex() + getNbRead();
- for (ITmfDataRequest<T> request : fRequests) {
+ long index = getIndex() + getNbRead() - 1;
+ for (ITmfDataRequest request : fRequests) {
if (!request.isCompleted()) {
if (request.getDataType().isInstance(data)) {
long start = request.getIndex();
- long end = start + request.getNbRequested() - 1;
+ long end = start + request.getNbRequested();
if (index >= start && index < end) {
request.handleData(data);
}
}
- }
- }
- }
+ }
+ }
+ }
}
@Override
public void start() {
- for (ITmfDataRequest<T> request : fRequests) {
+ for (ITmfDataRequest request : fRequests) {
if (!request.isCompleted()) {
request.start();
}
@Override
public void done() {
- for (ITmfDataRequest<T> request : fRequests) {
+ for (ITmfDataRequest request : fRequests) {
if (!request.isCompleted()) {
request.done();
}
@Override
public void fail() {
- for (ITmfDataRequest<T> request : fRequests) {
+ for (ITmfDataRequest request : fRequests) {
request.fail();
}
super.fail();
@Override
public void cancel() {
- for (ITmfDataRequest<T> request : fRequests) {
+ for (ITmfDataRequest request : fRequests) {
if (!request.isCompleted()) {
request.cancel();
}
if (fRequests.size() > 0) {
// If all sub requests are completed the coalesced request is
// treated as completed, too.
- for (ITmfDataRequest<T> request : fRequests) {
+ for (ITmfDataRequest request : fRequests) {
if (!request.isCompleted()) {
return false;
}
if (fRequests.size() > 0) {
// If all sub requests are canceled the coalesced request is
// treated as completed, too.
- for (ITmfDataRequest<T> request : fRequests) {
+ for (ITmfDataRequest request : fRequests) {
if (!request.isCancelled()) {
return false;
}
@Override
public boolean equals(Object other) {
- if (other instanceof TmfCoalescedDataRequest<?>) {
- TmfCoalescedDataRequest<?> request = (TmfCoalescedDataRequest<?>) other;
+ if (other instanceof TmfCoalescedDataRequest) {
+ TmfCoalescedDataRequest request = (TmfCoalescedDataRequest) other;
return (request.getDataType() == getDataType()) &&
(request.getIndex() == getIndex()) &&
(request.getNbRequested() == getNbRequested() &&