Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Schwarz2014-10-02 11:07:19 +0000
committerTobias Schwarz2014-10-02 11:07:19 +0000
commit8caf3c1794b0ab57f4f14ee8946c411c8592e325 (patch)
tree18bcf63a93ded4894e15548a3106393c9b1ab10a
parent320910c7c1d421a28e55c640124a75e0279f2743 (diff)
downloadorg.eclipse.tcf-8caf3c1794b0ab57f4f14ee8946c411c8592e325.tar.gz
org.eclipse.tcf-8caf3c1794b0ab57f4f14ee8946c411c8592e325.tar.xz
org.eclipse.tcf-8caf3c1794b0ab57f4f14ee8946c411c8592e325.zip
Target Explorer: enable reattach on connection recovered
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.core/src/org/eclipse/tcf/te/tcf/launch/core/delegates/Launch.java18
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.ui/src/org/eclipse/tcf/te/tcf/launch/ui/internal/services/DebugService.java11
2 files changed, 26 insertions, 3 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.core/src/org/eclipse/tcf/te/tcf/launch/core/delegates/Launch.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.core/src/org/eclipse/tcf/te/tcf/launch/core/delegates/Launch.java
index 93852a26b..d5b1c4613 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.core/src/org/eclipse/tcf/te/tcf/launch/core/delegates/Launch.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.core/src/org/eclipse/tcf/te/tcf/launch/core/delegates/Launch.java
@@ -17,6 +17,7 @@ import java.util.Map;
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
+import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.ILaunch;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.tcf.internal.debug.model.TCFLaunch;
@@ -48,6 +49,8 @@ public final class Launch extends TCFLaunch {
private ICallback callback = null;
+ private boolean manualDisconnected = false;
+
/**
* Non-notifying properties container used for data exchange between the steps.
*/
@@ -88,6 +91,8 @@ public final class Launch extends TCFLaunch {
Assert.isNotNull(node);
Assert.isNotNull(callback);
+ manualDisconnected = false;
+
// Remember the peer node
properties.setProperty("node", node); //$NON-NLS-1$
// Determine the peer name to pass on to the TCF launch
@@ -132,6 +137,19 @@ public final class Launch extends TCFLaunch {
});
}
+ public boolean isManualDisconnected() {
+ return manualDisconnected;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.internal.debug.model.TCFLaunch#disconnect()
+ */
+ @Override
+ public void disconnect() throws DebugException {
+ manualDisconnected = true;
+ super.disconnect();
+ }
+
/* (non-Javadoc)
* @see org.eclipse.tcf.internal.debug.model.TCFLaunch#getPeerName(org.eclipse.tcf.protocol.IPeer)
*/
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.ui/src/org/eclipse/tcf/te/tcf/launch/ui/internal/services/DebugService.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.ui/src/org/eclipse/tcf/te/tcf/launch/ui/internal/services/DebugService.java
index f50aef0fa..b220bbd75 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.ui/src/org/eclipse/tcf/te/tcf/launch/ui/internal/services/DebugService.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.ui/src/org/eclipse/tcf/te/tcf/launch/ui/internal/services/DebugService.java
@@ -197,12 +197,17 @@ public class DebugService extends AbstractService implements IDebugService {
ILaunch[] launches = DebugPlugin.getDefault().getLaunchManager().getLaunches();
for (ILaunch launch : launches) {
try {
- if (launch.getLaunchConfiguration().getType().getIdentifier().equals(ILaunchTypes.ATTACH) && launch instanceof IDisconnect && !((IDisconnect)launch).isDisconnected()) {
+ if (launch.getLaunchConfiguration().getType().getIdentifier().equals(ILaunchTypes.ATTACH)) {
IModelNode[] contexts = LaunchContextsPersistenceDelegate.getLaunchContexts(launch.getLaunchConfiguration());
if (contexts != null && contexts.length == 1 && contexts[0].equals(context)) {
- ((IDisconnect)launch).disconnect();
+ if (launch instanceof IDisconnect && !((IDisconnect)launch).isDisconnected()) {
+ ((IDisconnect)launch).disconnect();
+ data.setProperty(PROPERTY_DEBUGGER_DETACHED, true);
+ }
+ else if (launch instanceof Launch) {
+ data.setProperty(PROPERTY_DEBUGGER_DETACHED, !((Launch)launch).isManualDisconnected());
+ }
}
- data.setProperty(PROPERTY_DEBUGGER_DETACHED, true);
}
} catch (Exception e) {
if (e instanceof ExecutionException && "TCF task aborted".equals(e.getMessage()) //$NON-NLS-1$

Back to the top