From b7f0ec6908f6750c9dbca0a7e0f0a3f72a07797c Mon Sep 17 00:00:00 2001 From: William Bourque Date: Tue, 23 Mar 2010 18:22:05 +0000 Subject: [PATCH] Added reference to parent tracefile in events to ease operation in the state system --- .../linuxtools/lttng/event/LttngEvent.java | 57 +++++++++++++------ .../lttng/trace/LTTngTextTrace.java | 8 ++- .../linuxtools/lttng/trace/LTTngTrace.java | 4 +- 3 files changed, 48 insertions(+), 21 deletions(-) diff --git a/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/event/LttngEvent.java b/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/event/LttngEvent.java index a257b3b80c..44f161ac51 100644 --- a/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/event/LttngEvent.java +++ b/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/event/LttngEvent.java @@ -3,6 +3,7 @@ package org.eclipse.linuxtools.lttng.event; import org.eclipse.linuxtools.lttng.jni.JniEvent; import org.eclipse.linuxtools.tmf.event.TmfEvent; import org.eclipse.linuxtools.tmf.event.TmfEventSource; +import org.eclipse.linuxtools.tmf.trace.TmfTrace; /** * LttngEvent

@@ -16,7 +17,10 @@ public class LttngEvent extends TmfEvent { // Reference to the JNI JniEvent. Should only be used INTERNALLY private JniEvent jniEventReference = null; - + + // Reference to the parent trace that own this event + private TmfTrace parentTrace = null; + /** * Constructor with parameters.

* @@ -34,11 +38,12 @@ public class LttngEvent extends TmfEvent { * @see org.eclipse.linuxtools.lttng.event.LttngEventReference * @see org.eclipse.linuxtools.org.eclipse.linuxtools.lttng.jni.JniEvent */ - public LttngEvent(LttngTimestamp timestamp, TmfEventSource source, LttngEventType type, LttngEventContent content, LttngEventReference reference, JniEvent lttEvent) { + public LttngEvent(TmfTrace parent, LttngTimestamp timestamp, TmfEventSource source, LttngEventType type, LttngEventContent content, LttngEventReference reference, JniEvent lttEvent) { super(timestamp, source, type, reference); fContent = content; jniEventReference = lttEvent; + setParentTrace(parent); } /** @@ -47,7 +52,9 @@ public class LttngEvent extends TmfEvent { * @param oldEvent Event we want to copy from. */ public LttngEvent(LttngEvent oldEvent) { - this( (LttngTimestamp)oldEvent.getTimestamp(), + this( + oldEvent.getParentTrace(), + (LttngTimestamp)oldEvent.getTimestamp(), (TmfEventSource)oldEvent.getSource(), (LttngEventType)oldEvent.getType(), (LttngEventContent)oldEvent.getContent(), @@ -58,6 +65,25 @@ public class LttngEvent extends TmfEvent { /** + * Return the parent trace asoociated with this event + * + * @return Parent trace + */ + public TmfTrace getParentTrace() { + return parentTrace; + } + + /** + * Set a new parent trace for this event + * + * @param parentTrace The new parent + */ + public void setParentTrace(TmfTrace parentTrace) { + this.parentTrace = parentTrace; + } + + + /** * Return the channel name of this event.

* * @return Channel (tracefile) for this event @@ -84,19 +110,6 @@ public class LttngEvent extends TmfEvent { return ( (LttngEventType)this.getType() ).getMarkerName(); } - /** - * Set a new JniReference for this event.

- * - * Note : Reference is used to get back to the Jni during event parsing and need to be consistent. - * - * @param newJniEventReference New reference - * - * @see org.eclipse.linuxtools.org.eclipse.linuxtools.lttng.jni.JniEvent - */ - public void updateJniEventReference(JniEvent newJniEventReference) { - this.jniEventReference = newJniEventReference; - } - @Override public LttngEventContent getContent() { return (LttngEventContent)fContent; @@ -115,6 +128,18 @@ public class LttngEvent extends TmfEvent { fType = newType; } + /** + * Set a new JniReference for this event.

+ * + * Note : Reference is used to get back to the Jni during event parsing and need to be consistent. + * + * @param newJniEventReference New reference + * + * @see org.eclipse.linuxtools.org.eclipse.linuxtools.lttng.jni.JniEvent + */ + public void updateJniEventReference(JniEvent newJniEventReference) { + this.jniEventReference = newJniEventReference; + } /** * Convert this event into a Jni JniEvent.

diff --git a/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/trace/LTTngTextTrace.java b/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/trace/LTTngTextTrace.java index 5c3595ab63..5b09ffbdc2 100644 --- a/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/trace/LTTngTextTrace.java +++ b/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/trace/LTTngTextTrace.java @@ -71,7 +71,7 @@ public class LTTngTextTrace extends TmfTrace implements ITmfTrace { eventContent = new TextLttngEventContent(currentLttngEvent); eventReference = new LttngEventReference(this.getName()); - currentLttngEvent = new TextLttngEvent(eventTimestamp, eventSource, eventType, eventContent, eventReference); + currentLttngEvent = new TextLttngEvent(this, eventTimestamp, eventSource, eventType, eventContent, eventReference); eventContent.setEvent(currentLttngEvent); if ( positionToFirstEvent() == false ) { @@ -425,17 +425,19 @@ public class LTTngTextTrace extends TmfTrace implements ITmfTrace { // Redefine event to override method we know won't work with a Text tracefile class TextLttngEvent extends LttngEvent { - public TextLttngEvent( LttngTimestamp timestamp, + public TextLttngEvent( TmfTrace parent, + LttngTimestamp timestamp, LttngEventSource source, LttngEventType type, LttngEventContent content, LttngEventReference reference) { - super(timestamp, source, type, content, reference, null); + super(parent, timestamp, source, type, content, reference, null); } public TextLttngEvent(TextLttngEvent oldEvent) { this( + oldEvent.getParentTrace(), (LttngTimestamp)oldEvent.getTimestamp(), (LttngEventSource)oldEvent.getSource(), (LttngEventType)oldEvent.getType(), diff --git a/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/trace/LTTngTrace.java b/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/trace/LTTngTrace.java index 395b3aff72..bd6a021391 100644 --- a/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/trace/LTTngTrace.java +++ b/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/trace/LTTngTrace.java @@ -147,7 +147,7 @@ public class LTTngTrace extends TmfTrace { eventReference = new LttngEventReference(this.getName()); // Create the skeleton event - currentLttngEvent = new LttngEvent(eventTimestamp, eventSource, eventType, eventContent, eventReference, null); + currentLttngEvent = new LttngEvent(this, eventTimestamp, eventSource, eventType, eventContent, eventReference, null); // Create a new current location previousLocation = new LttngLocation(); @@ -729,7 +729,7 @@ public class LTTngTrace extends TmfTrace { eventReference = new LttngEventReference(jniEvent.getParentTracefile().getTracefilePath(), this.getName()); eventType = new LttngEventType(traceTypes.get( EventTypeKey.getEventTypeKey(jniEvent) )); eventContent = new LttngEventContent(currentLttngEvent); - currentLttngEvent = new LttngEvent(eventTimestamp, eventSource, eventType, eventContent, eventReference, null); + currentLttngEvent = new LttngEvent(this, eventTimestamp, eventSource, eventType, eventContent, eventReference, null); // The jni reference is no longer reliable but we will keep it anyhow currentLttngEvent.updateJniEventReference(jniEvent); -- 2.34.1