LTTng: Support for LTTng Tools 2.2
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng2.core / src / org / eclipse / linuxtools / internal / lttng2 / core / control / model / impl / ChannelInfo.java
1 /**********************************************************************
2 * Copyright (c) 2012, 2013 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 * Bernd Hufmann - Initial API and implementation
11 * Simon Delisle - Updated for support of LTTng Tools 2.2
12 **********************************************************************/
13 package org.eclipse.linuxtools.internal.lttng2.core.control.model.impl;
14
15 import java.util.ArrayList;
16 import java.util.Iterator;
17 import java.util.List;
18
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;
22
23 /**
24 * <p>
25 * Implementation of the trace channel interface (IChannelInfo) to store channel
26 * related data.
27 * </p>
28 *
29 * @author Bernd Hufmann
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 */
67 private final List<IEventInfo> fEvents = new ArrayList<IEventInfo>();
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 /**
77 * The value of the checkbox per UID buffers
78 */
79 private boolean fIsBuffersUID;
80
81
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;
104 fMaxSizeTraceFiles = other.fMaxSizeTraceFiles;
105 fMaxNumberTraceFiles = other.fMaxNumberTraceFiles;
106 fIsBuffersUID = other.fIsBuffersUID;
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 // ------------------------------------------------------------------------
122
123 @Override
124 public boolean isOverwriteMode() {
125 return fOverwriteMode;
126 }
127
128 @Override
129 public void setOverwriteMode(boolean mode) {
130 fOverwriteMode = mode;
131 }
132
133 @Override
134 public long getSubBufferSize() {
135 return fSubBufferSize;
136 }
137
138 @Override
139 public void setSubBufferSize(long bufferSize) {
140 fSubBufferSize = bufferSize;
141 }
142
143 @Override
144 public int getNumberOfSubBuffers() {
145 return fNumberOfSubBuffers;
146 }
147
148 @Override
149 public void setNumberOfSubBuffers(int numberOfSubBuffers) {
150 fNumberOfSubBuffers = numberOfSubBuffers;
151 }
152
153 @Override
154 public long getSwitchTimer() {
155 return fSwitchTimer;
156 }
157
158 @Override
159 public void setSwitchTimer(long timer) {
160 fSwitchTimer = timer;
161 }
162
163 @Override
164 public long getReadTimer() {
165 return fReadTimer;
166 }
167
168 @Override
169 public void setReadTimer(long timer) {
170 fReadTimer = timer;
171 }
172
173 @Override
174 public String getOutputType() {
175 return fOutputType;
176 }
177
178 @Override
179 public void setOutputType(String type) {
180 fOutputType = type;
181 }
182
183 @Override
184 public TraceEnablement getState() {
185 return fState;
186 }
187
188 @Override
189 public void setState(TraceEnablement state) {
190 fState = state;
191 }
192
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 }
202
203 @Override
204 public IEventInfo[] getEvents() {
205 return fEvents.toArray(new IEventInfo[fEvents.size()]);
206 }
207
208 @Override
209 public void setEvents(List<IEventInfo> events) {
210 fEvents.clear();
211 for (Iterator<IEventInfo> iterator = events.iterator(); iterator.hasNext();) {
212 IEventInfo eventInfo = iterator.next();
213 fEvents.add(eventInfo);
214 }
215 }
216
217 @Override
218 public void addEvent(IEventInfo channel) {
219 fEvents.add(channel);
220 }
221
222 @Override
223 public int hashCode() {
224 final int prime = 31;
225 int result = super.hashCode();
226 result = prime * result + fEvents.hashCode();
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));
234 return result;
235 }
236
237 @Override
238 public boolean equals(Object obj) {
239 if (this == obj) {
240 return true;
241 }
242 if (!super.equals(obj)) {
243 return false;
244 }
245 if (getClass() != obj.getClass()) {
246 return false;
247 }
248 ChannelInfo other = (ChannelInfo) obj;
249 if (!fEvents.equals(other.fEvents)) {
250 return false;
251 }
252 if (fNumberOfSubBuffers != other.fNumberOfSubBuffers) {
253 return false;
254 }
255 if (fOutputType == null) {
256 if (other.fOutputType != null) {
257 return false;
258 }
259 } else if (!fOutputType.equals(other.fOutputType)) {
260 return false;
261 }
262 if (fOverwriteMode != other.fOverwriteMode) {
263 return false;
264 }
265 if (fReadTimer != other.fReadTimer) {
266 return false;
267 }
268 if (fState != other.fState) {
269 return false;
270 }
271 if (fSubBufferSize != other.fSubBufferSize) {
272 return false;
273 }
274 if (fSwitchTimer != other.fSwitchTimer) {
275 return false;
276 }
277 return true;
278 }
279
280 @SuppressWarnings("nls")
281 @Override
282 public String toString() {
283 StringBuffer output = new StringBuffer();
284 output.append("[ChannelInfo(");
285 output.append(super.toString());
286 output.append(",State=");
287 output.append(fState);
288 output.append(",OverwriteMode=");
289 output.append(fOverwriteMode);
290 output.append(",SubBuffersSize=");
291 output.append(fSubBufferSize);
292 output.append(",NumberOfSubBuffers=");
293 output.append(fNumberOfSubBuffers);
294 output.append(",SwitchTimer=");
295 output.append(fSwitchTimer);
296 output.append(",ReadTimer=");
297 output.append(fReadTimer);
298 output.append(",output=");
299 output.append(fOutputType);
300 output.append(",Events=");
301 if (fEvents.isEmpty()) {
302 output.append("None");
303 } else {
304 for (Iterator<IEventInfo> iterator = fEvents.iterator(); iterator.hasNext();) {
305 IEventInfo event = iterator.next();
306 output.append(event.toString());
307 }
308 }
309 output.append(")]");
310 return output.toString();
311 }
312
313 @Override
314 public void setMaxSizeTraceFiles(int maxSizeTraceFiles) {
315 fMaxSizeTraceFiles = maxSizeTraceFiles;
316 }
317
318 @Override
319 public void setMaxNumberTraceFiles(int maxNumberTraceFiles) {
320 fMaxNumberTraceFiles = maxNumberTraceFiles;
321 }
322
323 @Override
324 public int getMaxSizeTraceFiles() {
325 return fMaxSizeTraceFiles;
326 }
327
328 @Override
329 public int getMaxNumberTraceFiles() {
330 return fMaxNumberTraceFiles;
331 }
332
333 @Override
334 public void setBuffersUID(boolean buffersUID) {
335 fIsBuffersUID = buffersUID;
336 }
337
338 @Override
339 public boolean isBuffersUID() {
340 return fIsBuffersUID;
341 }
342 }
This page took 0.040516 seconds and 6 git commands to generate.