Commit | Line | Data |
---|---|---|
5d10d135 ASL |
1 | /******************************************************************************* |
2 | * Copyright (c) 2009, 2010 Ericsson | |
0c32e4c5 | 3 | * |
5d10d135 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 | |
0c32e4c5 | 8 | * |
5d10d135 ASL |
9 | * Contributors: |
10 | * Alvaro Sanchez-Leon (alvsan09@gmail.com) - Initial API and implementation | |
11 | *******************************************************************************/ | |
5945cec9 | 12 | package org.eclipse.linuxtools.internal.lttng.core.request; |
5d10d135 ASL |
13 | |
14 | import java.util.Vector; | |
15 | ||
5945cec9 FC |
16 | import org.eclipse.linuxtools.internal.lttng.core.event.LttngSyntheticEvent; |
17 | import org.eclipse.linuxtools.internal.lttng.core.state.evProcessor.ITransEventProcessor; | |
6c13869b | 18 | import org.eclipse.linuxtools.tmf.core.component.TmfEventProvider; |
0c32e4c5 | 19 | import org.eclipse.linuxtools.tmf.core.event.ITmfEvent; |
6c13869b FC |
20 | import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange; |
21 | import org.eclipse.linuxtools.tmf.core.request.TmfEventRequest; | |
5d10d135 ASL |
22 | |
23 | /** | |
24 | * This class is an extension of Data Request which includes specific references | |
25 | * i.e. a status listener to indicate the start and end of the request | |
0c32e4c5 | 26 | * |
5d10d135 | 27 | * @author alvaro |
0c32e4c5 | 28 | * |
5d10d135 | 29 | */ |
0c32e4c5 | 30 | public class LttngSyntEventRequest extends TmfEventRequest |
5d10d135 ASL |
31 | implements ILttngSyntEventRequest { |
32 | ||
33 | // ======================================================================== | |
34 | // Data | |
35 | // ======================================================================= | |
0c32e4c5 | 36 | private final Vector<IRequestStatusListener> listeners = new Vector<IRequestStatusListener>(); |
5d10d135 ASL |
37 | private Long feventCount = 0L; |
38 | private boolean clearDataInd = false; | |
39 | private TmfTimeRange fExperimentTimeRange = null; | |
40 | private Object fsource = null; | |
41 | private final ITransEventProcessor fprocessor; | |
0c32e4c5 AM |
42 | private String fExperimentName = null; |
43 | ||
5d10d135 ASL |
44 | |
45 | // ======================================================================== | |
46 | // Constructors | |
47 | // ======================================================================= | |
c1c69938 FC |
48 | /** |
49 | * @param range | |
50 | * @param offset | |
51 | * @param nbEvents | |
52 | * @param maxBlockSize | |
53 | * @param listener | |
54 | * @param experimentTimeRange | |
55 | * @param processor | |
56 | */ | |
57 | public LttngSyntEventRequest(TmfTimeRange range, long offset, int nbEvents, | |
58 | int maxBlockSize, IRequestStatusListener listener, | |
59 | TmfTimeRange experimentTimeRange, ITransEventProcessor processor) { | |
0c32e4c5 | 60 | |
9c4eb5f7 | 61 | this(range, offset, nbEvents, maxBlockSize, listener, experimentTimeRange, processor, "", ExecutionType.FOREGROUND); //$NON-NLS-1$ |
c1c69938 | 62 | } |
5d10d135 ASL |
63 | /** |
64 | * @param range | |
65 | * @param offset | |
66 | * @param nbEvents | |
67 | * @param maxBlockSize | |
68 | * @param listener | |
c1c69938 FC |
69 | * @param experimentTimeRange |
70 | * @param processor | |
0c32e4c5 | 71 | * @param experimentName |
5d10d135 ASL |
72 | */ |
73 | public LttngSyntEventRequest(TmfTimeRange range, long offset, int nbEvents, | |
74 | int maxBlockSize, IRequestStatusListener listener, | |
c1c69938 | 75 | TmfTimeRange experimentTimeRange, ITransEventProcessor processor, String experimentName) { |
0c32e4c5 | 76 | |
c1c69938 FC |
77 | this(range, offset, nbEvents, maxBlockSize, listener, experimentTimeRange, processor, experimentName, ExecutionType.FOREGROUND); |
78 | } | |
79 | ||
80 | /** | |
81 | * @param range | |
82 | * @param offset | |
83 | * @param nbEvents | |
84 | * @param maxBlockSize | |
85 | * @param listener | |
86 | * @param experimentTimeRange | |
87 | * @param processor | |
88 | * @param experimentName | |
0c32e4c5 | 89 | * @param execType |
c1c69938 | 90 | */ |
9b635e61 FC |
91 | public LttngSyntEventRequest(TmfTimeRange range, long offset, int nbEvents, |
92 | int maxBlockSize, IRequestStatusListener listener, | |
c1c69938 FC |
93 | TmfTimeRange experimentTimeRange, ITransEventProcessor processor, String experimentName, |
94 | ExecutionType execType) { | |
0c32e4c5 | 95 | |
a79913eb | 96 | super(LttngSyntheticEvent.class, range, (int) offset, nbEvents, maxBlockSize, execType); |
5d10d135 | 97 | fExperimentTimeRange = experimentTimeRange; |
212550ba | 98 | fExperimentName = experimentName; |
5d10d135 ASL |
99 | addListener(listener); |
100 | ||
101 | fprocessor = processor; | |
102 | } | |
103 | ||
104 | /** | |
105 | * @param listener | |
106 | */ | |
107 | public void addListener(IRequestStatusListener listener) { | |
108 | if (listener != null && !listeners.contains(listener)) { | |
109 | listeners.add(listener); | |
110 | } | |
111 | } | |
112 | ||
113 | /** | |
114 | * @param listener | |
115 | */ | |
c1c69938 | 116 | public void removeListener(IRequestStatusListener listener) { |
5d10d135 ASL |
117 | if (listener != null) { |
118 | listeners.remove(listener); | |
119 | } | |
120 | } | |
121 | ||
122 | // ======================================================================== | |
123 | // Methods | |
124 | // ======================================================================= | |
125 | /* (non-Javadoc) | |
126 | * @see org.eclipse.linuxtools.lttng.request.ILttngEventRequest#startRequestInd(org.eclipse.linuxtools.tmf.experiment.TmfExperiment, boolean) | |
127 | */ | |
d4011df2 | 128 | @Override |
0c32e4c5 | 129 | public void startRequestInd(TmfEventProvider provider) { |
5d10d135 ASL |
130 | // trigger the start to process this request |
131 | provider.sendRequest(this); | |
132 | } | |
133 | ||
134 | /* (non-Javadoc) | |
135 | * @see org.eclipse.linuxtools.lttng.request.ILttngEventRequest#notifyCompletion() | |
136 | */ | |
d4011df2 | 137 | @Override |
5d10d135 ASL |
138 | public void notifyCompletion() { |
139 | // Notify specific state views | |
140 | for (IRequestStatusListener listener : listeners) { | |
141 | listener.processingCompleted(new RequestCompletedSignal(this)); | |
142 | } | |
143 | } | |
144 | ||
145 | /* (non-Javadoc) | |
146 | * @see org.eclipse.linuxtools.lttng.request.ILttngEventRequest#notifyStarting() | |
147 | */ | |
d4011df2 | 148 | @Override |
5d10d135 ASL |
149 | public void notifyStarting() { |
150 | for (IRequestStatusListener listener : listeners) { | |
151 | listener.processingStarted(new RequestStartedSignal(this)); | |
152 | } | |
153 | } | |
154 | ||
155 | /* (non-Javadoc) | |
156 | * @see org.eclipse.linuxtools.lttng.request.ILttngEventRequest#getExperimentTimeRange() | |
157 | */ | |
d4011df2 | 158 | @Override |
5d10d135 ASL |
159 | public TmfTimeRange getExperimentTimeRange() { |
160 | return fExperimentTimeRange; | |
161 | } | |
162 | ||
163 | /* | |
164 | * (non-Javadoc) | |
0c32e4c5 | 165 | * |
5d10d135 ASL |
166 | * @see |
167 | * org.eclipse.linuxtools.lttng.request.ILttngSyntEventRequest#setSynEventCount | |
168 | * (java.lang.Long) | |
169 | */ | |
d4011df2 | 170 | @Override |
5d10d135 ASL |
171 | public synchronized void setSynEventCount(Long numOfEvents) { |
172 | this.feventCount = numOfEvents; | |
173 | } | |
174 | ||
175 | /* | |
176 | * (non-Javadoc) | |
0c32e4c5 | 177 | * |
5d10d135 ASL |
178 | * @see |
179 | * org.eclipse.linuxtools.lttng.request.ILttngSyntEventRequest#getEventCount | |
180 | * () | |
181 | */ | |
d4011df2 | 182 | @Override |
550d787e | 183 | public synchronized Long getSynEventCount() { |
5d10d135 ASL |
184 | return feventCount; |
185 | } | |
186 | ||
187 | /* (non-Javadoc) | |
188 | * @see org.eclipse.linuxtools.lttng.request.ILttngEventRequest#setclearDataInd(boolean) | |
189 | */ | |
d4011df2 | 190 | @Override |
5d10d135 ASL |
191 | public void setclearDataInd(boolean clearAllData) { |
192 | this.clearDataInd = clearAllData; | |
193 | } | |
194 | ||
195 | /* (non-Javadoc) | |
196 | * @see org.eclipse.linuxtools.lttng.request.ILttngEventRequest#isclearDataInd() | |
197 | */ | |
d4011df2 | 198 | @Override |
5d10d135 ASL |
199 | public boolean isclearDataInd() { |
200 | return clearDataInd; | |
201 | } | |
202 | ||
203 | /* (non-Javadoc) | |
204 | * @see org.eclipse.linuxtools.lttng.request.ILttngEventRequest#handleData() | |
205 | */ | |
206 | @Override | |
0c32e4c5 | 207 | public void handleData(ITmfEvent event) { |
f9673903 | 208 | super.handleData(event); |
5d10d135 ASL |
209 | } |
210 | ||
211 | ||
212 | /* | |
213 | * (non-Javadoc) | |
0c32e4c5 | 214 | * |
5d10d135 ASL |
215 | * @see org.eclipse.linuxtools.tmf.request.TmfDataRequest#handleCompleted() |
216 | */ | |
550d787e | 217 | @Override |
5d10d135 ASL |
218 | public void handleCompleted() { |
219 | // notify listeners | |
220 | notifyCompletion(); | |
221 | super.handleCompleted(); | |
222 | } | |
223 | ||
224 | /** | |
225 | * @return the source | |
226 | */ | |
d4011df2 | 227 | @Override |
5d10d135 ASL |
228 | public Object getSource() { |
229 | return fsource; | |
230 | } | |
231 | ||
232 | /** | |
233 | * @param source | |
234 | */ | |
d4011df2 | 235 | @Override |
5d10d135 ASL |
236 | public void setSource(Object source) { |
237 | this.fsource = source; | |
238 | } | |
239 | ||
240 | /** | |
241 | * @return the event processor associated to this request | |
242 | */ | |
243 | public ITransEventProcessor getProcessor() { | |
244 | return fprocessor; | |
245 | } | |
c1c69938 FC |
246 | |
247 | @Override | |
248 | public String getExperimentName() { | |
249 | return fExperimentName; | |
250 | } | |
0c32e4c5 | 251 | |
5d10d135 | 252 | } |