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 * Alvaro Sanchez-Leon (alvsan09@gmail.com) - Initial API and implementation
11 *******************************************************************************/
12 package org
.eclipse
.linuxtools
.lttng
.core
.request
;
14 import java
.util
.Vector
;
16 import org
.eclipse
.linuxtools
.lttng
.core
.event
.LttngSyntheticEvent
;
17 import org
.eclipse
.linuxtools
.lttng
.core
.state
.evProcessor
.ITransEventProcessor
;
18 import org
.eclipse
.linuxtools
.tmf
.core
.component
.TmfEventProvider
;
19 import org
.eclipse
.linuxtools
.tmf
.core
.event
.TmfTimeRange
;
20 import org
.eclipse
.linuxtools
.tmf
.core
.request
.TmfEventRequest
;
23 * This class is an extension of Data Request which includes specific references
24 * i.e. a status listener to indicate the start and end of the request
29 public class LttngSyntEventRequest
extends TmfEventRequest
<LttngSyntheticEvent
>
30 implements ILttngSyntEventRequest
{
32 // ========================================================================
34 // =======================================================================
35 private Vector
<IRequestStatusListener
> listeners
= new Vector
<IRequestStatusListener
>();
36 private Long feventCount
= 0L;
37 private boolean clearDataInd
= false;
38 private TmfTimeRange fExperimentTimeRange
= null;
39 private Object fsource
= null;
40 private final ITransEventProcessor fprocessor
;
41 private String fExperimentName
= null;
44 // ========================================================================
46 // =======================================================================
53 * @param experimentTimeRange
56 public LttngSyntEventRequest(TmfTimeRange range
, long offset
, int nbEvents
,
57 int maxBlockSize
, IRequestStatusListener listener
,
58 TmfTimeRange experimentTimeRange
, ITransEventProcessor processor
) {
60 this(range
, offset
, nbEvents
, maxBlockSize
, listener
, experimentTimeRange
, processor
, "", ExecutionType
.FOREGROUND
); //$NON-NLS-1$
68 * @param experimentTimeRange
70 * @param experimentName
72 public LttngSyntEventRequest(TmfTimeRange range
, long offset
, int nbEvents
,
73 int maxBlockSize
, IRequestStatusListener listener
,
74 TmfTimeRange experimentTimeRange
, ITransEventProcessor processor
, String experimentName
) {
76 this(range
, offset
, nbEvents
, maxBlockSize
, listener
, experimentTimeRange
, processor
, experimentName
, ExecutionType
.FOREGROUND
);
85 * @param experimentTimeRange
87 * @param experimentName
90 public LttngSyntEventRequest(TmfTimeRange range
, long offset
, int nbEvents
,
91 int maxBlockSize
, IRequestStatusListener listener
,
92 TmfTimeRange experimentTimeRange
, ITransEventProcessor processor
, String experimentName
,
93 ExecutionType execType
) {
95 super(LttngSyntheticEvent
.class, range
, (int) offset
, nbEvents
, maxBlockSize
, execType
);
96 fExperimentTimeRange
= experimentTimeRange
;
97 fExperimentName
= new String(experimentName
);
98 addListener(listener
);
100 fprocessor
= processor
;
106 public void addListener(IRequestStatusListener listener
) {
107 if (listener
!= null && !listeners
.contains(listener
)) {
108 listeners
.add(listener
);
115 public void removeListener(IRequestStatusListener listener
) {
116 if (listener
!= null) {
117 listeners
.remove(listener
);
121 // ========================================================================
123 // =======================================================================
125 * @see org.eclipse.linuxtools.lttng.request.ILttngEventRequest#startRequestInd(org.eclipse.linuxtools.tmf.experiment.TmfExperiment, boolean)
128 public void startRequestInd(TmfEventProvider
<LttngSyntheticEvent
> provider
) {
129 // trigger the start to process this request
130 provider
.sendRequest(this);
134 * @see org.eclipse.linuxtools.lttng.request.ILttngEventRequest#notifyCompletion()
137 public void notifyCompletion() {
138 // Notify specific state views
139 for (IRequestStatusListener listener
: listeners
) {
140 listener
.processingCompleted(new RequestCompletedSignal(this));
145 * @see org.eclipse.linuxtools.lttng.request.ILttngEventRequest#notifyStarting()
148 public void notifyStarting() {
149 for (IRequestStatusListener listener
: listeners
) {
150 listener
.processingStarted(new RequestStartedSignal(this));
155 * @see org.eclipse.linuxtools.lttng.request.ILttngEventRequest#getExperimentTimeRange()
158 public TmfTimeRange
getExperimentTimeRange() {
159 return fExperimentTimeRange
;
166 * org.eclipse.linuxtools.lttng.request.ILttngSyntEventRequest#setSynEventCount
170 public synchronized void setSynEventCount(Long numOfEvents
) {
171 this.feventCount
= numOfEvents
;
178 * org.eclipse.linuxtools.lttng.request.ILttngSyntEventRequest#getEventCount
182 public synchronized Long
getSynEventCount() {
187 * @see org.eclipse.linuxtools.lttng.request.ILttngEventRequest#setclearDataInd(boolean)
190 public void setclearDataInd(boolean clearAllData
) {
191 this.clearDataInd
= clearAllData
;
195 * @see org.eclipse.linuxtools.lttng.request.ILttngEventRequest#isclearDataInd()
198 public boolean isclearDataInd() {
203 * @see org.eclipse.linuxtools.lttng.request.ILttngEventRequest#handleData()
206 public void handleData(LttngSyntheticEvent event
) {
207 super.handleData(event
);
214 * @see org.eclipse.linuxtools.tmf.request.TmfDataRequest#handleCompleted()
217 public void handleCompleted() {
220 super.handleCompleted();
227 public Object
getSource() {
235 public void setSource(Object source
) {
236 this.fsource
= source
;
240 * @return the event processor associated to this request
242 public ITransEventProcessor
getProcessor() {
247 public String
getExperimentName() {
248 return fExperimentName
;