efbc02fdbef80c9059179e233e8965e998f473cb
1 /*******************************************************************************
2 * Copyright (c) 2009 Ericsson
4 * All rights reserved. This program and the accompanying materials are made
5 * 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
9 * Contributors: Alvaro Sanchez-Leon - Initial implementation
10 *******************************************************************************/
11 package org
.eclipse
.linuxtools
.lttng
.ui
.views
.common
;
13 import org
.eclipse
.linuxtools
.lttng
.event
.LttngEvent
;
14 import org
.eclipse
.linuxtools
.lttng
.event
.LttngEventContent
;
15 import org
.eclipse
.linuxtools
.lttng
.event
.LttngEventField
;
16 import org
.eclipse
.linuxtools
.lttng
.state
.StateStrings
.Fields
;
17 import org
.eclipse
.linuxtools
.lttng
.state
.evProcessor
.IEventProcessing
;
18 import org
.eclipse
.linuxtools
.lttng
.state
.model
.LttngTraceState
;
19 import org
.eclipse
.linuxtools
.lttng
.ui
.TraceDebug
;
20 import org
.eclipse
.linuxtools
.tmf
.event
.TmfEventField
;
21 import org
.eclipse
.linuxtools
.tmf
.event
.TmfTimeRange
;
23 public abstract class AbsTRangeUpdate
implements IEventProcessing
{
25 private static final long MINORBITS
= 20;
27 // ========================================================================
29 // =======================================================================
32 * Get the mkdev node id<br>
34 * This is an implementation of a KERNEL macro used in Lttv
37 public long getMkdevId(long major
, long minor
) {
38 return (((major
) << MINORBITS
) | (minor
));
42 * Get the pixels per Nano second, either from active widgets or initialise
43 * with the experiment time range values
50 protected double getPixelsPerNs(LttngTraceState traceSt
, ParamsUpdater params
) {
51 double pixPerNs
= params
.getPixelsPerNs();
53 TmfTimeRange tsetRange
= traceSt
.getInputDataRef().getExperimentTimeWindow();
55 long startTime
= tsetRange
.getStartTime().getValue();
56 long endTime
= tsetRange
.getEndTime().getValue();
57 long delta
= endTime
- startTime
;
60 pixPerNs
= (double) params
.getWidth() / (double) delta
;
61 params
.setPixelsPerNs(pixPerNs
);
68 * protected method used when only one Field is expected with Type "Long" if
69 * the number of fields is greater, the first field is returned and a
70 * tracing message is sent Null is returned if the value could not be
75 * @param expectedNumFields
78 protected Long
getDField(LttngEvent trcEvent
, LttngTraceState traceSt
,
79 Fields expectedField
) {
81 TmfEventField
[] fields
= trcEvent
.getContent().getFields();
82 String
[] fieldLabels
= trcEvent
.getContent().getFormat().getLabels();
84 // Only one field expected
85 if (fields
.length
!= 1 || fieldLabels
.length
!= 1) {
86 StringBuilder sb
= new StringBuilder(
87 "Unexpected number of fields received: " + fields
.length
88 + " for Event: " + trcEvent
.getMarkerName()
91 for (TmfEventField field
: fields
) {
92 sb
.append(((LttngEventField
) field
).getName() + " ");
95 TraceDebug
.debug(sb
.toString());
96 if (fields
.length
== 0) {
101 LttngEventField field
= (LttngEventField
) fields
[0];
102 String fieldname
= field
.getName();
103 String expectedFieldName
= expectedField
.getInName();
104 if (fieldname
.equals(expectedFieldName
)) {
105 Object fieldObj
= field
.getValue();
106 if (fieldObj
instanceof Long
) {
107 // Expected value found
108 fieldVal
= (Long
) field
.getValue();
110 if (TraceDebug
.isDEBUG()) {
112 .debug("Unexpected field Type. Expected: Long, Received: "
113 + fieldObj
.getClass().getSimpleName());
118 TraceDebug
.debug("Unexpected field received: " + fieldname
119 + " Expected: " + expectedFieldName
);
127 * protected method used when a Field is requested among several available
128 * fields and the expected type is Long
132 * @param expectedNumFields
135 protected Long
getAFieldLong(LttngEvent trcEvent
, LttngTraceState traceSt
,
136 Fields expectedField
) {
137 Long fieldVal
= null;
138 TmfEventField
[] fields
= ((LttngEventContent
) trcEvent
.getContent())
139 .getFields(trcEvent
);
141 // At least one field expected
142 if (fields
.length
== 0) {
143 TraceDebug
.debug("Unexpected number of fields received: "
148 LttngEventField field
;
150 String expectedFieldName
= expectedField
.getInName();
151 for (int i
= 0; i
< fields
.length
; i
++) {
152 field
= (LttngEventField
) fields
[i
];
153 fieldname
= field
.getName();
154 if (fieldname
.equals(expectedFieldName
)) {
155 Object fieldObj
= field
.getValue();
156 if (fieldObj
instanceof Long
) {
157 // Expected value found
158 fieldVal
= (Long
) field
.getValue();
159 // if (expectedField == Fields.LTT_FIELD_TYPE) {
160 // TraceDebug.debug("Field Type value is: " + fieldVal);
164 if (TraceDebug
.isDEBUG()) {
166 .debug("Unexpected field Type. Expected: Long, Received: "
167 + fieldObj
.getClass().getSimpleName());
174 if (fieldVal
== null) {
175 if (TraceDebug
.isDEBUG()) {
176 sendNoFieldFoundMsg(fields
, expectedFieldName
);
183 * protected method used when a Field is requested among several available
184 * fields and the expected type is String
188 * @param expectedNumFields
191 protected String
getAFieldString(LttngEvent trcEvent
,
192 LttngTraceState traceSt
, Fields expectedField
) {
193 String fieldVal
= null;
195 TmfEventField
[] fields
= ((LttngEventContent
) trcEvent
.getContent())
196 .getFields(trcEvent
);
198 // Only one field expected
199 if (fields
.length
== 0) {
200 TraceDebug
.debug("Unexpected number of fields received: "
205 LttngEventField field
;
207 String expectedFieldName
= expectedField
.getInName();
208 for (int i
= 0; i
< fields
.length
; i
++) {
209 field
= (LttngEventField
) fields
[i
];
210 fieldname
= field
.getName();
211 if (fieldname
.equals(expectedFieldName
)) {
212 Object fieldObj
= field
.getValue();
213 if (fieldObj
instanceof String
) {
214 // Expected value found
215 fieldVal
= (String
) field
.getValue();
218 if (TraceDebug
.isDEBUG()) {
220 .debug("Unexpected field Type. Expected: String, Received: "
221 + fieldObj
.getClass().getSimpleName());
228 if (fieldVal
== null) {
229 if (TraceDebug
.isDEBUG()) {
230 sendNoFieldFoundMsg(fields
, expectedFieldName
);
236 protected void sendNoFieldFoundMsg(TmfEventField
[] fields
,
237 String expectedFieldName
) {
238 LttngEventField field
;
239 StringBuilder sb
= new StringBuilder("Field not found, requested: "
240 + expectedFieldName
);
241 sb
.append(" number of fields: " + fields
.length
+ "Fields: ");
242 for (int i
= 0; i
< fields
.length
; i
++) {
243 field
= (LttngEventField
) fields
[i
];
244 sb
.append(field
.getName() + " ");
247 TraceDebug
.debug(sb
.toString(), 5);
This page took 0.036424 seconds and 4 git commands to generate.