diff options
author | Uwe Stieber | 2012-07-19 11:06:03 +0000 |
---|---|---|
committer | Uwe Stieber | 2012-07-19 11:06:03 +0000 |
commit | d5180015caac5bc65b5fa5948c3c5bd1508053e3 (patch) | |
tree | b8b37af97607b14398bdc4bc32d5bf7ab4b77260 /target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.core/src/org/eclipse/tcf/te/tcf/launch/core | |
parent | 2b2b3c12129f50e946fd5d2893c4d4793b3c86e3 (diff) | |
download | org.eclipse.tcf-d5180015caac5bc65b5fa5948c3c5bd1508053e3.tar.gz org.eclipse.tcf-d5180015caac5bc65b5fa5948c3c5bd1508053e3.tar.xz org.eclipse.tcf-d5180015caac5bc65b5fa5948c3c5bd1508053e3.zip |
Target Explorer + TCF Debugger: Activate TCFLaunch with an already opened channel. This change is replacing the previous IValueAddService OSGi service implementation.
Diffstat (limited to 'target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.core/src/org/eclipse/tcf/te/tcf/launch/core')
2 files changed, 29 insertions, 5 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 5ea691a98..8f5aea44f 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 @@ -9,12 +9,20 @@ *******************************************************************************/ package org.eclipse.tcf.te.tcf.launch.core.delegates; +import java.util.HashMap; +import java.util.Map; + +import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.Platform; import org.eclipse.debug.core.ILaunch; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.tcf.internal.debug.model.TCFLaunch; +import org.eclipse.tcf.protocol.IChannel; import org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer; import org.eclipse.tcf.te.runtime.properties.PropertiesContainer; +import org.eclipse.tcf.te.tcf.core.Tcf; +import org.eclipse.tcf.te.tcf.core.interfaces.IChannelManager; +import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerModel; /** * Default tcf launch implementation. @@ -48,11 +56,27 @@ public final class Launch extends TCFLaunch { } /** - * Attach the tcf debugger to the given peer id. - * @param peerId The peer id. + * Attach the tcf debugger to the given peer model node. + * + * @param node The peer model node. Must not be <code>null</code>. */ - public void attachDebugger(String peerId) { - launchTCF(getLaunchMode(), peerId); + public void attachDebugger(IPeerModel node) { + Assert.isNotNull(node); + + final String name = node.getPeer().getName(); + + // The debugger is using it's own channel as the implementation + // calls for channel.terminate(...) directly + Map<String, Boolean> flags = new HashMap<String, Boolean>(); + flags.put(IChannelManager.FLAG_FORCE_NEW, Boolean.TRUE); + Tcf.getChannelManager().openChannel(node.getPeer(), flags, new IChannelManager.DoneOpenChannel() { + @Override + public void doneOpenChannel(Throwable error, IChannel channel) { + if (error == null && channel != null) { + launchTCF(getLaunchMode(), name, channel); + } + } + }); } /* (non-Javadoc) diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.core/src/org/eclipse/tcf/te/tcf/launch/core/steps/AttachDebuggerStep.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.core/src/org/eclipse/tcf/te/tcf/launch/core/steps/AttachDebuggerStep.java index 6593e49fc..3ac987781 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.core/src/org/eclipse/tcf/te/tcf/launch/core/steps/AttachDebuggerStep.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.core/src/org/eclipse/tcf/te/tcf/launch/core/steps/AttachDebuggerStep.java @@ -62,7 +62,7 @@ public class AttachDebuggerStep extends AbstractTcfLaunchStep { if (launch instanceof Launch) { Launch tcfLaunch = (Launch)launch; try { - tcfLaunch.attachDebugger(getActivePeerModel(fullQualifiedId, data).getRemotePeerId()); + tcfLaunch.attachDebugger(getActivePeerModel(fullQualifiedId, data)); callback.done(this, Status.OK_STATUS); } catch (Exception e) { |