Fix for bug 382684 (connection re-use)
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng2.ui / src / org / eclipse / linuxtools / internal / lttng2 / ui / views / control / handlers / DisconnectHandler.java
index 25e3cc6e44c43ce891f52473993bf7c834311264..f6129ee261c2d7c52c14feb19401a9fb972c02fb 100644 (file)
@@ -13,13 +13,14 @@ package org.eclipse.linuxtools.internal.lttng2.ui.views.control.handlers;
 
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TargetNodeState;
+import org.eclipse.linuxtools.internal.lttng2.core.control.model.TargetNodeState;
 
 /**
- * <b><u>DisconnectHandler</u></b>
  * <p>
  * Command handler implementation to disconnect from a target host.
  * </p>
+ * 
+ * @author Bernd Hufmann
  */
 public class DisconnectHandler extends BaseNodeHandler {
 
@@ -33,7 +34,12 @@ public class DisconnectHandler extends BaseNodeHandler {
      */
     @Override
     public Object execute(ExecutionEvent event) throws ExecutionException {
-        fTargetNode.disconnect();
+        fLock.lock();
+        try {
+            fTargetNode.disconnect();
+        } finally {
+            fLock.unlock();
+        }
         return null;
     }
 
@@ -43,6 +49,13 @@ public class DisconnectHandler extends BaseNodeHandler {
     */
     @Override
     public boolean isEnabled() {
-        return super.isEnabled() && (fTargetNode.getTargetNodeState() == TargetNodeState.CONNECTED);
+        boolean isEnabled = false;
+        fLock.lock();
+        try {
+           isEnabled = super.isEnabled() && (fTargetNode.getTargetNodeState() == TargetNodeState.CONNECTED);
+        } finally {
+            fLock.unlock();
+        }
+        return isEnabled;
     }
 }
This page took 0.025277 seconds and 5 git commands to generate.