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
.core
.request
;
15 import java
.util
.Vector
;
17 import org
.eclipse
.linuxtools
.tmf
.core
.event
.ITmfEvent
;
20 * <b><u>TmfCoalescedDataRequest</u></b>
22 * TODO: Implement me. Please.
24 public class TmfCoalescedDataRequest
<T
extends ITmfEvent
> extends TmfDataRequest
<T
> {
26 // ------------------------------------------------------------------------
28 // ------------------------------------------------------------------------
30 protected Vector
<ITmfDataRequest
<T
>> fRequests
= new Vector
<ITmfDataRequest
<T
>>();
32 // ------------------------------------------------------------------------
34 // ------------------------------------------------------------------------
39 public TmfCoalescedDataRequest(Class
<T
> dataType
) {
40 this(dataType
, 0, ALL_DATA
, DEFAULT_BLOCK_SIZE
, ExecutionType
.FOREGROUND
);
43 public TmfCoalescedDataRequest(Class
<T
> dataType
, ExecutionType execType
) {
44 this(dataType
, 0, ALL_DATA
, DEFAULT_BLOCK_SIZE
, execType
);
50 public TmfCoalescedDataRequest(Class
<T
> dataType
, int index
) {
51 this(dataType
, index
, ALL_DATA
, DEFAULT_BLOCK_SIZE
, ExecutionType
.FOREGROUND
);
54 public TmfCoalescedDataRequest(Class
<T
> dataType
, int index
, ExecutionType execType
) {
55 this(dataType
, index
, ALL_DATA
, DEFAULT_BLOCK_SIZE
, execType
);
62 public TmfCoalescedDataRequest(Class
<T
> dataType
, int index
, int nbRequested
) {
63 this(dataType
, index
, nbRequested
, DEFAULT_BLOCK_SIZE
, ExecutionType
.FOREGROUND
);
66 public TmfCoalescedDataRequest(Class
<T
> dataType
, int index
, int nbRequested
, ExecutionType execType
) {
67 this(dataType
, index
, nbRequested
, DEFAULT_BLOCK_SIZE
, execType
);
75 public TmfCoalescedDataRequest(Class
<T
> dataType
, int index
, int nbRequested
, int blockSize
) {
76 super(dataType
, index
, nbRequested
, blockSize
, ExecutionType
.FOREGROUND
);
79 public TmfCoalescedDataRequest(Class
<T
> dataType
, int index
, int nbRequested
, int blockSize
, ExecutionType execType
) {
80 super(dataType
, index
, nbRequested
, blockSize
, execType
);
83 // ------------------------------------------------------------------------
85 // ------------------------------------------------------------------------
87 public void addRequest(ITmfDataRequest
<T
> request
) {
88 fRequests
.add(request
);
91 public boolean isCompatible(ITmfDataRequest
<T
> request
) {
93 boolean ok
= request
.getIndex() == getIndex();
94 ok
&= request
.getNbRequested() == getNbRequested();
95 ok
&= request
.getExecType() == getExecType();
96 //ok &= request.getDataType() == getDataType();
101 // ------------------------------------------------------------------------
103 // ------------------------------------------------------------------------
106 public void handleData(T data
) {
107 super.handleData(data
);
108 // Don't call sub-requests handleData() unless this is a
109 // TmfCoalescedDataRequest; extended classes should call
110 // the sub-requests handleData().
111 if (getClass() == TmfCoalescedDataRequest
.class) {
112 for (ITmfDataRequest
<T
> request
: fRequests
) {
113 if (!request
.isCompleted()) {
114 if (request
.getDataType().isInstance(data
)) {
115 request
.handleData(data
);
123 public void start() {
124 for (ITmfDataRequest
<T
> request
: fRequests
) {
125 if (!request
.isCompleted()) {
134 for (ITmfDataRequest
<T
> request
: fRequests
) {
135 if (!request
.isCompleted()) {
144 for (ITmfDataRequest
<T
> request
: fRequests
) {
151 public void cancel() {
152 for (ITmfDataRequest
<T
> request
: fRequests
) {
153 if (!request
.isCompleted()) {
161 public boolean isCompleted() {
162 // Firstly, check if coalescing request is completed
163 if (super.isCompleted()) {
167 // Secondly, check if all sub-requests are finished
168 if (fRequests
.size() > 0) {
169 // If all sub requests are completed the coalesced request is
170 // treated as completed, too.
171 for (ITmfDataRequest
<T
> request
: fRequests
) {
172 if (!request
.isCompleted()) {
179 // Coalescing request is not finished if there are no sub-requests
184 public boolean isCancelled() {
185 // Firstly, check if coalescing request is canceled
186 if (super.isCancelled()) {
190 // Secondly, check if all sub-requests are canceled
191 if (fRequests
.size() > 0) {
192 // If all sub requests are canceled the coalesced request is
193 // treated as completed, too.
194 for (ITmfDataRequest
<T
> request
: fRequests
) {
195 if (!request
.isCancelled()) {
202 // Coalescing request is not canceled if there are no sub-requests
208 // ------------------------------------------------------------------------
210 // ------------------------------------------------------------------------
213 // All requests have a unique id
214 public int hashCode() {
215 return super.hashCode();
219 public boolean equals(Object other
) {
220 if (other
instanceof TmfCoalescedDataRequest
<?
>) {
221 TmfCoalescedDataRequest
<?
> request
= (TmfCoalescedDataRequest
<?
>) other
;
222 return (request
.getDataType() == getDataType()) &&
223 (request
.getIndex() == getIndex()) &&
224 (request
.getNbRequested() == getNbRequested() &&
225 (request
.getExecType() == getExecType()));
231 @SuppressWarnings("nls")
232 public String
toString() {
233 return "[TmfCoalescedDataRequest(" + getRequestId() + "," + getDataType().getSimpleName()
234 + "," + getIndex() + "," + getNbRequested() + "," + getBlockSize() + ")]";
This page took 0.035032 seconds and 5 git commands to generate.