1 package org
.eclipse
.linuxtools
.lttng
.core
.event
;
3 import org
.eclipse
.linuxtools
.lttng
.jni
.JniEvent
;
4 import org
.eclipse
.linuxtools
.tmf
.core
.event
.TmfEvent
;
5 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.TmfTrace
;
8 * <b><u>LttngEvent</u></b>
10 * Lttng specific TmfEvent implementation.
12 * The main difference from the basic Tmf implementation is that we keep an
13 * internal reference to the JniEvent
15 * The conversion from this LttngEvent to the JniEvent is then possible.
17 public class LttngEvent
extends TmfEvent
{
19 // Reference to the JNI JniEvent. Should only be used INTERNALLY
20 private JniEvent jniEventReference
= null;
22 // Parameter-less constructor
25 fType
= LttngEventType
.DEFAULT_EVENT_TYPE
;
29 * Constructor with parameters.
32 * @param timestamp The timestamp of this event
33 * @param source The source of this event
34 * @param type The type of this event
35 * @param content The content of this event
36 * @param reference The reference of this event
37 * @param lttEvent A reference to a valid JniEvent object
39 * @see org.eclipse.linuxtools.tmf.core.event.TmfTimestamp
40 * @see org.eclipse.linuxtools.tmf.core.event.TmfEventSource
41 * @see org.eclipse.linuxtools.lttng.core.event.LttngEventType
42 * @see org.eclipse.linuxtools.lttng.core.event.LttngEventContent
43 * @see org.eclipse.linuxtools.lttng.core.event.LttngEventReference
44 * @see org.eclipse.linuxtools.org.eclipse.linuxtools.lttng.jni.JniEvent
46 public LttngEvent(TmfTrace
<LttngEvent
> parent
, LttngTimestamp timestamp
, String source
, LttngEventType type
, LttngEventContent content
,
47 String reference
, JniEvent lttEvent
)
49 super(timestamp
, source
, type
, reference
);
51 jniEventReference
= lttEvent
;
52 setParentTrace(parent
);
59 * @param oldEvent Event we want to copy from.
61 @SuppressWarnings("unchecked")
62 public LttngEvent(LttngEvent oldEvent
) {
64 (TmfTrace
<LttngEvent
>) oldEvent
.getTrace(),
65 (LttngTimestamp
)oldEvent
.getTimestamp(),
67 (LttngEventType
)oldEvent
.getType(),
68 (LttngEventContent
)oldEvent
.getContent(),
69 oldEvent
.getReference(),
70 oldEvent
.jniEventReference
74 * Set a new parent trace for this event
76 * @param parentTrace The new parent
78 public void setParentTrace(TmfTrace
<LttngEvent
> parentTrace
) {
84 * Return the channel name of this event.<p>
86 * @return Channel (tracefile) for this event
88 public String
getChannelName() {
89 return this.getType().getTracefileName();
93 * Cpu id number of this event.
98 public long getCpuId() {
99 return this.getType().getCpuId();
103 * Marker name of this event.
106 * @return Marker name
108 public String
getMarkerName() {
109 return this.getType().getMarkerName();
113 * Marker id of this event.
118 public int getMarkerId() {
119 return this.getType().getMarkerId();
123 public LttngEventContent
getContent() {
124 return (LttngEventContent
) fContent
;
127 public void setContent(LttngEventContent newContent
) {
128 fContent
= newContent
;
131 public void setReference(String reference
) {
132 fReference
= reference
;
136 public LttngEventType
getType() {
137 return (LttngEventType
) fType
;
140 public void setType(LttngEventType newType
) {
145 * Set a new JniReference for this event.
148 * Note : Reference is used to get back to the Jni during event parsing and
149 * need to be consistent.
151 * @param newJniEventReference New reference
153 * @see org.eclipse.linuxtools.org.eclipse.linuxtools.lttng.jni.JniEvent
155 public synchronized void updateJniEventReference(JniEvent newJniEventReference
) {
156 this.jniEventReference
= newJniEventReference
;
160 * Convert this event into a Jni JniEvent.
163 * Note : Some verifications are done to make sure the event is still valid
164 * on the Jni side before conversion.<br>
165 * If it is not the case, null will be returned.
167 * @return The converted JniEvent
169 * @see org.eclipse.linuxtools.org.eclipse.linuxtools.lttng.jni.JniEvent
171 public synchronized JniEvent
convertEventTmfToJni() {
172 JniEvent tmpEvent
= null;
175 // Should we remove the check to save some time??
177 // We don't want to send away events that are outdated as their
178 // informations could be invalid
179 // If the timestamp between the event and the trace are not coherent we
180 // will not perform the conversion
181 if (jniEventReference
.getParentTracefile().getParentTrace().getCurrentEventTimestamp().getTime() == getTimestamp().getValue()) {
182 tmpEvent
= jniEventReference
;
185 .println("convertEventTmfToJni() failed: Unsynced Timestamp > TMF:" + getTimestamp().getValue() + " <--> JNI:" + jniEventReference
.getParentTracefile().getParentTrace().getCurrentEventTimestamp().getTime()); //$NON-NLS-1$//$NON-NLS-2$
191 @SuppressWarnings("nls")
192 public String
toString() {
193 StringBuffer result
= new StringBuffer("[LttngEvent(");
194 result
.append("Timestamp:" + getTimestamp().getValue());
195 result
.append(",Channel:" + getChannelName());
196 result
.append(",CPU:" + getCpuId());
197 result
.append(",Marker:" + getMarkerName());
198 result
.append(",Content:" + getContent() + ")]");
200 return result
.toString();
204 public LttngEvent
clone() {
205 LttngEvent clone
= (LttngEvent
) super.clone();
206 clone
.getContent().setEvent(clone
);
207 clone
.jniEventReference
= jniEventReference
;