Commit | Line | Data |
---|---|---|
eb1bab5b | 1 | /********************************************************************** |
94cce698 | 2 | * Copyright (c) 2012, 2013 Ericsson |
b0318660 | 3 | * |
eb1bab5b BH |
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 | |
b0318660 AM |
8 | * |
9 | * Contributors: | |
eb1bab5b | 10 | * Bernd Hufmann - Initial API and implementation |
e799e5f3 | 11 | * Simon Delisle - Updated for support of LTTng Tools 2.2 |
eb1bab5b | 12 | **********************************************************************/ |
9315aeee | 13 | package org.eclipse.linuxtools.internal.lttng2.core.control.model.impl; |
eb1bab5b BH |
14 | |
15 | import java.util.ArrayList; | |
16 | import java.util.Iterator; | |
17 | import java.util.List; | |
18 | ||
9315aeee BH |
19 | import org.eclipse.linuxtools.internal.lttng2.core.control.model.IChannelInfo; |
20 | import org.eclipse.linuxtools.internal.lttng2.core.control.model.IEventInfo; | |
21 | import org.eclipse.linuxtools.internal.lttng2.core.control.model.TraceEnablement; | |
eb1bab5b BH |
22 | |
23 | /** | |
eb1bab5b BH |
24 | * <p> |
25 | * Implementation of the trace channel interface (IChannelInfo) to store channel | |
b0318660 | 26 | * related data. |
eb1bab5b | 27 | * </p> |
b0318660 | 28 | * |
dbd4432d | 29 | * @author Bernd Hufmann |
eb1bab5b BH |
30 | */ |
31 | public class ChannelInfo extends TraceInfo implements IChannelInfo { | |
32 | ||
33 | // ------------------------------------------------------------------------ | |
34 | // Attributes | |
35 | // ------------------------------------------------------------------------ | |
36 | /** | |
37 | * The overwrite mode of the channel. | |
38 | */ | |
39 | private boolean fOverwriteMode; | |
40 | /** | |
41 | * The sub-buffer size of the channel. | |
42 | */ | |
43 | private long fSubBufferSize; | |
44 | /** | |
45 | * The number of sub-buffers of the channel. | |
46 | */ | |
47 | private int fNumberOfSubBuffers; | |
48 | /** | |
49 | * The switch timer interval of the channel. | |
50 | */ | |
51 | private long fSwitchTimer; | |
52 | /** | |
53 | * The read timer interval of the channel. | |
54 | */ | |
55 | private long fReadTimer; | |
56 | /** | |
57 | * The Output type of the channel. | |
58 | */ | |
59 | private String fOutputType = ""; //$NON-NLS-1$ | |
60 | /** | |
61 | * The channel enable state. | |
62 | */ | |
63 | private TraceEnablement fState = TraceEnablement.DISABLED; | |
64 | /** | |
65 | * The events information of the channel. | |
66 | */ | |
b0318660 | 67 | private final List<IEventInfo> fEvents = new ArrayList<IEventInfo>(); |
e799e5f3 SD |
68 | /** |
69 | * The maximum size of trace files | |
70 | */ | |
71 | private int fMaxSizeTraceFiles; | |
72 | /** | |
73 | * The maximum number of trace files | |
74 | */ | |
75 | private int fMaxNumberTraceFiles; | |
76 | /** | |
83051fc3 | 77 | * The value of buffer type |
e799e5f3 | 78 | */ |
83051fc3 | 79 | private BufferType fBufferType; |
b0318660 | 80 | |
eb1bab5b | 81 | |
eb1bab5b BH |
82 | // ------------------------------------------------------------------------ |
83 | // Constructors | |
84 | // ------------------------------------------------------------------------ | |
85 | /** | |
86 | * Constructor | |
87 | * @param name - name channel | |
88 | */ | |
89 | public ChannelInfo(String name) { | |
90 | super(name); | |
91 | } | |
92 | ||
93 | /** | |
94 | * Copy constructor | |
95 | * @param other - the instance to copy | |
96 | */ | |
97 | public ChannelInfo(ChannelInfo other) { | |
98 | super(other); | |
99 | fOverwriteMode = other.fOverwriteMode; | |
100 | fSubBufferSize = other.fSubBufferSize; | |
101 | fNumberOfSubBuffers = other.fNumberOfSubBuffers; | |
102 | fSwitchTimer = other.fSwitchTimer; | |
103 | fReadTimer = other.fReadTimer; | |
e799e5f3 SD |
104 | fMaxSizeTraceFiles = other.fMaxSizeTraceFiles; |
105 | fMaxNumberTraceFiles = other.fMaxNumberTraceFiles; | |
83051fc3 | 106 | fBufferType = other.fBufferType; |
eb1bab5b BH |
107 | fOutputType = (other.fOutputType == null ? null : String.valueOf(other.fOutputType)); |
108 | fState = other.fState; | |
109 | for (Iterator<IEventInfo> iterator = other.fEvents.iterator(); iterator.hasNext();) { | |
110 | IEventInfo event = iterator.next(); | |
111 | if (event instanceof EventInfo) { | |
112 | fEvents.add(new EventInfo((EventInfo)event)); | |
113 | } else { | |
114 | fEvents.add(event); | |
115 | } | |
116 | } | |
117 | } | |
118 | ||
119 | // ------------------------------------------------------------------------ | |
120 | // Accessors | |
121 | // ------------------------------------------------------------------------ | |
11252342 | 122 | |
eb1bab5b BH |
123 | @Override |
124 | public boolean isOverwriteMode() { | |
125 | return fOverwriteMode; | |
126 | } | |
127 | ||
eb1bab5b BH |
128 | @Override |
129 | public void setOverwriteMode(boolean mode) { | |
130 | fOverwriteMode = mode; | |
131 | } | |
132 | ||
eb1bab5b BH |
133 | @Override |
134 | public long getSubBufferSize() { | |
135 | return fSubBufferSize; | |
136 | } | |
137 | ||
eb1bab5b BH |
138 | @Override |
139 | public void setSubBufferSize(long bufferSize) { | |
140 | fSubBufferSize = bufferSize; | |
eb1bab5b BH |
141 | } |
142 | ||
eb1bab5b BH |
143 | @Override |
144 | public int getNumberOfSubBuffers() { | |
145 | return fNumberOfSubBuffers; | |
146 | } | |
147 | ||
eb1bab5b BH |
148 | @Override |
149 | public void setNumberOfSubBuffers(int numberOfSubBuffers) { | |
150 | fNumberOfSubBuffers = numberOfSubBuffers; | |
151 | } | |
152 | ||
eb1bab5b BH |
153 | @Override |
154 | public long getSwitchTimer() { | |
155 | return fSwitchTimer; | |
156 | } | |
157 | ||
eb1bab5b BH |
158 | @Override |
159 | public void setSwitchTimer(long timer) { | |
160 | fSwitchTimer = timer; | |
161 | } | |
162 | ||
eb1bab5b BH |
163 | @Override |
164 | public long getReadTimer() { | |
165 | return fReadTimer; | |
166 | } | |
167 | ||
eb1bab5b BH |
168 | @Override |
169 | public void setReadTimer(long timer) { | |
170 | fReadTimer = timer; | |
171 | } | |
172 | ||
eb1bab5b BH |
173 | @Override |
174 | public String getOutputType() { | |
175 | return fOutputType; | |
176 | } | |
177 | ||
eb1bab5b BH |
178 | @Override |
179 | public void setOutputType(String type) { | |
180 | fOutputType = type; | |
181 | } | |
182 | ||
eb1bab5b BH |
183 | @Override |
184 | public TraceEnablement getState() { | |
185 | return fState; | |
186 | } | |
187 | ||
eb1bab5b BH |
188 | @Override |
189 | public void setState(TraceEnablement state) { | |
190 | fState = state; | |
191 | } | |
b0318660 | 192 | |
eb1bab5b BH |
193 | @Override |
194 | public void setState(String stateName) { | |
195 | fState = TraceEnablement.ENABLED; | |
196 | if (TraceEnablement.DISABLED.getInName().equals(stateName)) { | |
197 | fState = TraceEnablement.DISABLED; | |
198 | } else if (TraceEnablement.ENABLED.getInName().equals(stateName)) { | |
199 | fState = TraceEnablement.ENABLED; | |
200 | } | |
201 | } | |
b0318660 | 202 | |
eb1bab5b BH |
203 | @Override |
204 | public IEventInfo[] getEvents() { | |
205 | return fEvents.toArray(new IEventInfo[fEvents.size()]); | |
206 | } | |
207 | ||
eb1bab5b BH |
208 | @Override |
209 | public void setEvents(List<IEventInfo> events) { | |
a6702bfa | 210 | fEvents.clear(); |
eb1bab5b | 211 | for (Iterator<IEventInfo> iterator = events.iterator(); iterator.hasNext();) { |
b0318660 | 212 | IEventInfo eventInfo = iterator.next(); |
eb1bab5b BH |
213 | fEvents.add(eventInfo); |
214 | } | |
215 | } | |
216 | ||
eb1bab5b BH |
217 | @Override |
218 | public void addEvent(IEventInfo channel) { | |
219 | fEvents.add(channel); | |
220 | } | |
b0318660 | 221 | |
eb1bab5b BH |
222 | @Override |
223 | public int hashCode() { | |
d132bcc7 BH |
224 | final int prime = 31; |
225 | int result = super.hashCode(); | |
77fdc5df | 226 | result = prime * result + fEvents.hashCode(); |
d132bcc7 BH |
227 | result = prime * result + fNumberOfSubBuffers; |
228 | result = prime * result + ((fOutputType == null) ? 0 : fOutputType.hashCode()); | |
229 | result = prime * result + (fOverwriteMode ? 1231 : 1237); | |
230 | result = prime * result + (int) (fReadTimer ^ (fReadTimer >>> 32)); | |
231 | result = prime * result + ((fState == null) ? 0 : (fState.ordinal() + 1)); | |
232 | result = prime * result + (int) (fSubBufferSize ^ (fSubBufferSize >>> 32)); | |
233 | result = prime * result + (int) (fSwitchTimer ^ (fSwitchTimer >>> 32)); | |
83051fc3 | 234 | result = prime * result + ((fBufferType == null) ? 0 : (fBufferType.ordinal() + 1)); |
eb1bab5b | 235 | return result; |
b0318660 | 236 | } |
eb1bab5b | 237 | |
eb1bab5b | 238 | @Override |
d132bcc7 BH |
239 | public boolean equals(Object obj) { |
240 | if (this == obj) { | |
241 | return true; | |
eb1bab5b | 242 | } |
d132bcc7 | 243 | if (!super.equals(obj)) { |
eb1bab5b BH |
244 | return false; |
245 | } | |
d132bcc7 | 246 | if (getClass() != obj.getClass()) { |
eb1bab5b BH |
247 | return false; |
248 | } | |
d132bcc7 | 249 | ChannelInfo other = (ChannelInfo) obj; |
77fdc5df | 250 | if (!fEvents.equals(other.fEvents)) { |
eb1bab5b BH |
251 | return false; |
252 | } | |
d132bcc7 | 253 | if (fNumberOfSubBuffers != other.fNumberOfSubBuffers) { |
eb1bab5b BH |
254 | return false; |
255 | } | |
d132bcc7 BH |
256 | if (fOutputType == null) { |
257 | if (other.fOutputType != null) { | |
258 | return false; | |
259 | } | |
260 | } else if (!fOutputType.equals(other.fOutputType)) { | |
eb1bab5b BH |
261 | return false; |
262 | } | |
d132bcc7 | 263 | if (fOverwriteMode != other.fOverwriteMode) { |
eb1bab5b BH |
264 | return false; |
265 | } | |
d132bcc7 | 266 | if (fReadTimer != other.fReadTimer) { |
eb1bab5b BH |
267 | return false; |
268 | } | |
d132bcc7 | 269 | if (fState != other.fState) { |
eb1bab5b BH |
270 | return false; |
271 | } | |
d132bcc7 | 272 | if (fSubBufferSize != other.fSubBufferSize) { |
eb1bab5b BH |
273 | return false; |
274 | } | |
d132bcc7 BH |
275 | if (fSwitchTimer != other.fSwitchTimer) { |
276 | return false; | |
eb1bab5b | 277 | } |
83051fc3 BH |
278 | if (fBufferType != other.fBufferType) { |
279 | return false; | |
280 | } | |
eb1bab5b BH |
281 | return true; |
282 | } | |
b0318660 | 283 | |
eb1bab5b BH |
284 | @SuppressWarnings("nls") |
285 | @Override | |
286 | public String toString() { | |
287 | StringBuffer output = new StringBuffer(); | |
288 | output.append("[ChannelInfo("); | |
289 | output.append(super.toString()); | |
290 | output.append(",State="); | |
291 | output.append(fState); | |
292 | output.append(",OverwriteMode="); | |
293 | output.append(fOverwriteMode); | |
294 | output.append(",SubBuffersSize="); | |
295 | output.append(fSubBufferSize); | |
296 | output.append(",NumberOfSubBuffers="); | |
297 | output.append(fNumberOfSubBuffers); | |
298 | output.append(",SwitchTimer="); | |
299 | output.append(fSwitchTimer); | |
300 | output.append(",ReadTimer="); | |
301 | output.append(fReadTimer); | |
302 | output.append(",output="); | |
303 | output.append(fOutputType); | |
83051fc3 BH |
304 | if (!fBufferType.equals(BufferType.BUFFER_TYPE_UNKNOWN) && !fBufferType.equals(BufferType.BUFFER_SHARED)) { |
305 | output.append(",BufferType="); | |
306 | output.append(fBufferType); | |
307 | } | |
eb1bab5b BH |
308 | output.append(",Events="); |
309 | if (fEvents.isEmpty()) { | |
310 | output.append("None"); | |
311 | } else { | |
312 | for (Iterator<IEventInfo> iterator = fEvents.iterator(); iterator.hasNext();) { | |
b0318660 | 313 | IEventInfo event = iterator.next(); |
eb1bab5b BH |
314 | output.append(event.toString()); |
315 | } | |
316 | } | |
317 | output.append(")]"); | |
318 | return output.toString(); | |
319 | } | |
e799e5f3 SD |
320 | |
321 | @Override | |
322 | public void setMaxSizeTraceFiles(int maxSizeTraceFiles) { | |
323 | fMaxSizeTraceFiles = maxSizeTraceFiles; | |
324 | } | |
325 | ||
326 | @Override | |
327 | public void setMaxNumberTraceFiles(int maxNumberTraceFiles) { | |
328 | fMaxNumberTraceFiles = maxNumberTraceFiles; | |
329 | } | |
330 | ||
331 | @Override | |
332 | public int getMaxSizeTraceFiles() { | |
333 | return fMaxSizeTraceFiles; | |
334 | } | |
335 | ||
336 | @Override | |
337 | public int getMaxNumberTraceFiles() { | |
338 | return fMaxNumberTraceFiles; | |
339 | } | |
340 | ||
341 | @Override | |
83051fc3 BH |
342 | public void setBufferType(BufferType bufferType) { |
343 | fBufferType = bufferType; | |
e799e5f3 SD |
344 | } |
345 | ||
346 | @Override | |
83051fc3 BH |
347 | public BufferType getBufferType() { |
348 | return fBufferType; | |
e799e5f3 | 349 | } |
a6702bfa | 350 | } |