2010-09-15 Francois Chouinard <fchouinard@gmail.com> Contribution for Bug287563
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf / src / org / eclipse / linuxtools / tmf / request / TmfCoalescedDataRequest.java
1 /*******************************************************************************
2 * Copyright (c) 2009, 2010 Ericsson
3 *
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
8 *
9 * Contributors:
10 * Francois Chouinard - Initial API and implementation
11 *******************************************************************************/
12
13 package org.eclipse.linuxtools.tmf.request;
14
15 import java.util.Vector;
16
17 import org.eclipse.linuxtools.tmf.event.TmfData;
18
19 /**
20 * <b><u>TmfCoalescedDataRequest</u></b>
21 * <p>
22 * TODO: Implement me. Please.
23 */
24 public class TmfCoalescedDataRequest<T extends TmfData> extends TmfDataRequest<T> {
25
26 // ------------------------------------------------------------------------
27 // Attributes
28 // ------------------------------------------------------------------------
29
30 protected Vector<ITmfDataRequest<T>> fRequests = new Vector<ITmfDataRequest<T>>();
31
32 // ------------------------------------------------------------------------
33 // Constructor
34 // ------------------------------------------------------------------------
35
36 /**
37 * Default constructor
38 */
39 public TmfCoalescedDataRequest(Class<T> dataType) {
40 this(dataType, 0, ALL_DATA, DEFAULT_BLOCK_SIZE, ExecutionType.FOREGROUND);
41 }
42
43 public TmfCoalescedDataRequest(Class<T> dataType, ExecutionType execType) {
44 this(dataType, 0, ALL_DATA, DEFAULT_BLOCK_SIZE, execType);
45 }
46
47 /**
48 * @param nbRequested
49 */
50 public TmfCoalescedDataRequest(Class<T> dataType, int index) {
51 this(dataType, index, ALL_DATA, DEFAULT_BLOCK_SIZE, ExecutionType.FOREGROUND);
52 }
53
54 public TmfCoalescedDataRequest(Class<T> dataType, int index, ExecutionType execType) {
55 this(dataType, index, ALL_DATA, DEFAULT_BLOCK_SIZE, execType);
56 }
57
58 /**
59 * @param index
60 * @param nbRequested
61 */
62 public TmfCoalescedDataRequest(Class<T> dataType, int index, int nbRequested) {
63 this(dataType, index, nbRequested, DEFAULT_BLOCK_SIZE, ExecutionType.FOREGROUND);
64 }
65
66 public TmfCoalescedDataRequest(Class<T> dataType, int index, int nbRequested, ExecutionType execType) {
67 this(dataType, index, nbRequested, DEFAULT_BLOCK_SIZE, execType);
68 }
69
70 /**
71 * @param index
72 * @param nbRequested
73 * @param blockSize
74 */
75 public TmfCoalescedDataRequest(Class<T> dataType, int index, int nbRequested, int blockSize) {
76 super(dataType, index, nbRequested, blockSize, ExecutionType.FOREGROUND);
77 }
78
79 public TmfCoalescedDataRequest(Class<T> dataType, int index, int nbRequested, int blockSize, ExecutionType execType) {
80 super(dataType, index, nbRequested, blockSize, execType);
81 }
82
83 // ------------------------------------------------------------------------
84 // Management
85 // ------------------------------------------------------------------------
86
87 public void addRequest(ITmfDataRequest<T> request) {
88 fRequests.add(request);
89 }
90
91 public synchronized boolean isCompatible(ITmfDataRequest<T> request) {
92
93 boolean ok = !isCompleted();
94 ok &= request.getIndex() == getIndex();
95 ok &= request.getNbRequested() == getNbRequested();
96 ok &= request.getBlockize() == getBlockize();
97 ok &= request.getExecType() == getExecType();
98
99 return ok;
100 }
101
102 // ------------------------------------------------------------------------
103 // ITmfDataRequest
104 // ------------------------------------------------------------------------
105
106 @Override
107 public synchronized void handleData() {
108 for (ITmfDataRequest<T> request : fRequests) {
109 request.setData(getData());
110 request.handleData();
111 }
112 }
113
114 @Override
115 public synchronized void done() {
116 for (ITmfDataRequest<T> request : fRequests) {
117 request.done();
118 }
119 super.done();
120 }
121
122 @Override
123 public synchronized void fail() {
124 for (ITmfDataRequest<T> request : fRequests) {
125 request.fail();
126 }
127 super.fail();
128 }
129
130 @Override
131 public synchronized void cancel() {
132 for (ITmfDataRequest<T> request : fRequests) {
133 request.cancel();
134 }
135 super.cancel();
136 }
137
138 // ------------------------------------------------------------------------
139 // Object
140 // ------------------------------------------------------------------------
141
142 @Override
143 // All requests have a unique id
144 public int hashCode() {
145 return super.hashCode();
146 }
147
148 @Override
149 public boolean equals(Object other) {
150 if (other instanceof TmfCoalescedDataRequest<?>) {
151 TmfCoalescedDataRequest<?> request = (TmfCoalescedDataRequest<?>) other;
152 return (request.getDataType() == getDataType()) &&
153 (request.getIndex() == getIndex()) &&
154 (request.getNbRequested() == getNbRequested() &&
155 (request.getExecType() == getExecType()));
156 }
157 return false;
158 }
159
160 @Override
161 public String toString() {
162 return "[TmfCoalescedDataRequest(" + getRequestId() + "," + getDataType().getSimpleName()
163 + "," + getIndex() + "," + getNbRequested() + "," + getBlockize() + ")]";
164 }
165
166 }
This page took 0.033847 seconds and 5 git commands to generate.