From 377f1ad8fd2b1959a433d860463f663642cb8bf9 Mon Sep 17 00:00:00 2001 From: William Bourque Date: Mon, 19 Apr 2010 23:06:47 +0000 Subject: [PATCH] DRAFT : Enable the possibility to copy an experiment. Useful to run request in the background. --- .../tmf/component/TmfComponent.java | 7 +++++ .../tmf/component/TmfDataProvider.java | 12 ++++++++ .../tmf/component/TmfEventProvider.java | 6 +++- .../tmf/experiment/TmfExperiment.java | 29 ++++++++++++++++++- .../linuxtools/tmf/trace/ITmfTrace.java | 5 +++- 5 files changed, 56 insertions(+), 3 deletions(-) diff --git a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfComponent.java b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfComponent.java index 7f14a548e4..02279e0a39 100644 --- a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfComponent.java +++ b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfComponent.java @@ -34,7 +34,14 @@ public abstract class TmfComponent implements ITmfComponent { fName = name; TmfSignalManager.register(this); } + + public TmfComponent(TmfComponent oldComponent) { + this.fName = oldComponent.fName; + // Should we register? Probably not but I'm not quite sure what this does + //register(); + } + // ------------------------------------------------------------------------ // ITmfComponent // ------------------------------------------------------------------------ diff --git a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfDataProvider.java b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfDataProvider.java index f5c6f6dc0f..8dabfb3c04 100644 --- a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfDataProvider.java +++ b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfDataProvider.java @@ -71,7 +71,19 @@ public abstract class TmfDataProvider extends TmfComponent im TmfProviderManager.register(fType, this); } + + public TmfDataProvider(TmfDataProvider oldDataProvider) { + super(oldDataProvider); + + this.fType = oldDataProvider.fType; + this.fQueueSize = oldDataProvider.fQueueSize; + + this.fExecutor = new TmfRequestExecutor(); + this.fDataQueue = (oldDataProvider.fQueueSize > 1) ? new LinkedBlockingQueue(oldDataProvider.fQueueSize) : new SynchronousQueue(); + this.fSynchDepth = oldDataProvider.fSynchDepth; + } + @Override public void dispose() { TmfProviderManager.deregister(fType, this); diff --git a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfEventProvider.java b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfEventProvider.java index 3b843bfe92..26c75d83f9 100644 --- a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfEventProvider.java +++ b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfEventProvider.java @@ -32,7 +32,11 @@ public abstract class TmfEventProvider extends TmfDataProvid public TmfEventProvider(Class type, int queueSize) { super("TmfEventProvider", type, queueSize); } - + + public TmfEventProvider(TmfEventProvider oldProvider) { + super(oldProvider); + } + @Override public boolean isCompleted(ITmfDataRequest request, T data, int nbRead) { boolean dataRequestCompleted = super.isCompleted(request, data, nbRead); diff --git a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java index 5e1b2cf9f3..e58dc8d667 100644 --- a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java +++ b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java @@ -109,7 +109,34 @@ public class TmfExperiment extends TmfEventProvider imple public TmfExperiment(Class type, String id, ITmfTrace[] traces, int indexPageSize) { this(type, id, traces, TmfTimestamp.Zero, indexPageSize); } - + + + public TmfExperiment(TmfExperiment oldExperiment) { + super(oldExperiment.fType); + + this.fExperimentId = oldExperiment.fExperimentId; + this.fEpoch = oldExperiment.fEpoch; + + this.fIndexPageSize = oldExperiment.fIndexPageSize; + + this.fTraces = new ITmfTrace[oldExperiment.fTraces.length]; + + for ( int x=0; x createTraceCopy() { + return new TmfExperiment(this); + } + + /** * */ diff --git a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/trace/ITmfTrace.java b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/trace/ITmfTrace.java index f803820730..b587b56179 100644 --- a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/trace/ITmfTrace.java +++ b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/trace/ITmfTrace.java @@ -21,7 +21,10 @@ import org.eclipse.linuxtools.tmf.event.TmfTimestamp; *

*/ public interface ITmfTrace { - + + public ITmfTrace createTraceCopy(); + + /** * @return the trace path */ -- 2.34.1