lttng: Add a diagram showing the dependencies between plugins
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng2.core / src / org / eclipse / linuxtools / internal / lttng2 / core / control / model / impl / ChannelInfo.java
CommitLineData
eb1bab5b 1/**********************************************************************
60ae41e1 2 * Copyright (c) 2012, 2014 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 13package org.eclipse.linuxtools.internal.lttng2.core.control.model.impl;
eb1bab5b
BH
14
15import java.util.ArrayList;
16import java.util.Iterator;
17import java.util.List;
18
9315aeee
BH
19import org.eclipse.linuxtools.internal.lttng2.core.control.model.IChannelInfo;
20import org.eclipse.linuxtools.internal.lttng2.core.control.model.IEventInfo;
21import 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 */
31public 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 */
e0838ca1 67 private final List<IEventInfo> fEvents = new ArrayList<>();
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 */
6303c000 79 private BufferType fBufferType = BufferType.BUFFER_TYPE_UNKNOWN;
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);
6303c000 304 if ((fBufferType != null) && !fBufferType.equals(BufferType.BUFFER_TYPE_UNKNOWN) && !fBufferType.equals(BufferType.BUFFER_SHARED)) {
83051fc3
BH
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}
This page took 0.074581 seconds and 5 git commands to generate.