May 31
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng / src / org / eclipse / linuxtools / lttng / request / LttngSyntEventRequest.java
CommitLineData
5d10d135
ASL
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 * Alvaro Sanchez-Leon (alvsan09@gmail.com) - Initial API and implementation
11 *******************************************************************************/
12package org.eclipse.linuxtools.lttng.request;
13
14import java.util.Vector;
15
16import org.eclipse.linuxtools.lttng.event.LttngSyntheticEvent;
17import org.eclipse.linuxtools.lttng.state.evProcessor.ITransEventProcessor;
18import org.eclipse.linuxtools.tmf.component.TmfEventProvider;
19import org.eclipse.linuxtools.tmf.event.TmfTimeRange;
20import org.eclipse.linuxtools.tmf.request.TmfEventRequest;
21
22/**
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
25 *
26 * @author alvaro
27 *
28 */
29public class LttngSyntEventRequest extends TmfEventRequest<LttngSyntheticEvent>
30 implements ILttngSyntEventRequest {
31
32 // ========================================================================
33 // Data
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
42 // ========================================================================
43 // Constructors
44 // =======================================================================
45 /**
46 * @param range
47 * @param offset
48 * @param nbEvents
49 * @param maxBlockSize
50 * @param listener
51 */
52 public LttngSyntEventRequest(TmfTimeRange range, long offset, int nbEvents,
53 int maxBlockSize, IRequestStatusListener listener,
54 TmfTimeRange experimentTimeRange, ITransEventProcessor processor) {
55
56 super(LttngSyntheticEvent.class, range, nbEvents, maxBlockSize);
57 //super(0, nbEvents, maxBlockSize);
58 fExperimentTimeRange = experimentTimeRange;
59 addListener(listener);
60
61 fprocessor = processor;
62 }
63
64 /**
65 * @param listener
66 */
67 public void addListener(IRequestStatusListener listener) {
68 if (listener != null && !listeners.contains(listener)) {
69 listeners.add(listener);
70 }
71 }
72
73 /**
74 * @param listener
75 */
76 public void removeListner(IRequestStatusListener listener) {
77 if (listener != null) {
78 listeners.remove(listener);
79 }
80 }
81
82 // ========================================================================
83 // Methods
84 // =======================================================================
85 /* (non-Javadoc)
86 * @see org.eclipse.linuxtools.lttng.request.ILttngEventRequest#startRequestInd(org.eclipse.linuxtools.tmf.experiment.TmfExperiment, boolean)
87 */
88 public void startRequestInd(TmfEventProvider<LttngSyntheticEvent> provider) {
89 // trigger the start to process this request
90 provider.sendRequest(this);
91 }
92
93 /* (non-Javadoc)
94 * @see org.eclipse.linuxtools.lttng.request.ILttngEventRequest#notifyCompletion()
95 */
96 public void notifyCompletion() {
97 // Notify specific state views
98 for (IRequestStatusListener listener : listeners) {
99 listener.processingCompleted(new RequestCompletedSignal(this));
100 }
101 }
102
103 /* (non-Javadoc)
104 * @see org.eclipse.linuxtools.lttng.request.ILttngEventRequest#notifyStarting()
105 */
106 public void notifyStarting() {
107 for (IRequestStatusListener listener : listeners) {
108 listener.processingStarted(new RequestStartedSignal(this));
109 }
110 }
111
112 /* (non-Javadoc)
113 * @see org.eclipse.linuxtools.lttng.request.ILttngEventRequest#getExperimentTimeRange()
114 */
115 public TmfTimeRange getExperimentTimeRange() {
116 return fExperimentTimeRange;
117 }
118
119 /*
120 * (non-Javadoc)
121 *
122 * @see
123 * org.eclipse.linuxtools.lttng.request.ILttngSyntEventRequest#setSynEventCount
124 * (java.lang.Long)
125 */
126 public synchronized void setSynEventCount(Long numOfEvents) {
127 this.feventCount = numOfEvents;
128 }
129
130 /*
131 * (non-Javadoc)
132 *
133 * @see
134 * org.eclipse.linuxtools.lttng.request.ILttngSyntEventRequest#getEventCount
135 * ()
136 */
137 public Long getSynEventCount() {
138 return feventCount;
139 }
140
141 /* (non-Javadoc)
142 * @see org.eclipse.linuxtools.lttng.request.ILttngEventRequest#setclearDataInd(boolean)
143 */
144 public void setclearDataInd(boolean clearAllData) {
145 this.clearDataInd = clearAllData;
146 }
147
148 /* (non-Javadoc)
149 * @see org.eclipse.linuxtools.lttng.request.ILttngEventRequest#isclearDataInd()
150 */
151 public boolean isclearDataInd() {
152 return clearDataInd;
153 }
154
155 /* (non-Javadoc)
156 * @see org.eclipse.linuxtools.lttng.request.ILttngEventRequest#handleData()
157 */
158 @Override
159 public void handleData() {
160 }
161
162
163 /*
164 * (non-Javadoc)
165 *
166 * @see org.eclipse.linuxtools.tmf.request.TmfDataRequest#handleCompleted()
167 */
9aae0442 168 @Override
5d10d135
ASL
169 public void handleCompleted() {
170 // notify listeners
171 notifyCompletion();
172 super.handleCompleted();
173 }
174
175 /**
176 * @return the source
177 */
178 public Object getSource() {
179 return fsource;
180 }
181
182 /**
183 * @param source
184 */
185 public void setSource(Object source) {
186 this.fsource = source;
187 }
188
189 /**
190 * @return the event processor associated to this request
191 */
192 public ITransEventProcessor getProcessor() {
193 return fprocessor;
194 }
195}
This page took 0.033268 seconds and 5 git commands to generate.