tmf: Move creation of timer to init method instead of constructor
authorBernd Hufmann <Bernd.Hufmann@ericsson.com>
Mon, 27 Jan 2014 14:04:46 +0000 (09:04 -0500)
committerBernd Hufmann <bernd.hufmann@ericsson.com>
Tue, 28 Jan 2014 23:48:16 +0000 (18:48 -0500)
By the doing this, the timer is not running when creating trace
instances for validation.

Also, cancel timer when trace is disposed.

Change-Id: I4269ddb1faba771c039649d92f2e1477076668c8
Signed-off-by: Bernd Hufmann <Bernd.Hufmann@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/21138
Reviewed-by: Alexandre Montplaisir <alexmonthy@voxpopuli.im>
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
IP-Clean: Matthew Khouzam <matthew.khouzam@ericsson.com>
Tested-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Tested-by: Hudson CI
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/component/TmfEventProvider.java

index d3986e7ec3954f11bc69045d1b55ca6b2830398f..83a318c28989fa1a4d3e757eac26dcafe7289620 100644 (file)
@@ -76,7 +76,7 @@ public abstract class TmfEventProvider extends TmfComponent implements ITmfEvent
 
     private int fRequestPendingCounter = 0;
 
-    private final Timer fTimer;
+    private Timer fTimer;
 
     private boolean fIsTimeout = false;
 
@@ -90,7 +90,6 @@ public abstract class TmfEventProvider extends TmfComponent implements ITmfEvent
     public TmfEventProvider() {
         super();
         fExecutor = new TmfRequestExecutor();
-        fTimer = new Timer();
     }
 
     /**
@@ -120,6 +119,11 @@ public abstract class TmfEventProvider extends TmfComponent implements ITmfEvent
         fExecutor.init();
 
         fSignalDepth = 0;
+
+        synchronized (fLock) {
+             fTimer = new Timer();
+        }
+
         TmfProviderManager.register(fType, this);
     }
 
@@ -127,6 +131,12 @@ public abstract class TmfEventProvider extends TmfComponent implements ITmfEvent
     public void dispose() {
         TmfProviderManager.deregister(fType, this);
         fExecutor.stop();
+        synchronized (fLock) {
+            if (fTimer != null) {
+                fTimer.cancel();
+            }
+            fTimer = null;
+        }
         super.dispose();
     }
 
@@ -162,6 +172,14 @@ public abstract class TmfEventProvider extends TmfComponent implements ITmfEvent
                 return;
             }
 
+            /*
+             * Dispatch request in case timer is not running.
+             */
+            if (fTimer == null) {
+                queueRequest(request);
+                return;
+            }
+
             /*
              *  For the first background request in the request pending queue
              *  a timer will be started to allow other background requests to
This page took 0.025872 seconds and 5 git commands to generate.