Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.tcf.debug/META-INF/MANIFEST.MF2
-rw-r--r--plugins/org.eclipse.tcf.debug/src/org/eclipse/tcf/internal/debug/launch/TCFLaunchDelegate.java19
-rw-r--r--plugins/org.eclipse.tcf.debug/src/org/eclipse/tcf/internal/debug/model/TCFLaunch.java60
-rw-r--r--plugins/org.eclipse.tcf/META-INF/MANIFEST.MF4
-rw-r--r--plugins/org.eclipse.tcf/src/org/eclipse/tcf/Activator.java3
-rw-r--r--plugins/org.eclipse.tcf/src/org/eclipse/tcf/osgi/OSGIServices.java72
-rw-r--r--plugins/org.eclipse.tcf/src/org/eclipse/tcf/osgi/services/IValueAddService.java48
7 files changed, 60 insertions, 148 deletions
diff --git a/plugins/org.eclipse.tcf.debug/META-INF/MANIFEST.MF b/plugins/org.eclipse.tcf.debug/META-INF/MANIFEST.MF
index 90009fc93..361bf8275 100644
--- a/plugins/org.eclipse.tcf.debug/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.tcf.debug/META-INF/MANIFEST.MF
@@ -11,8 +11,6 @@ Require-Bundle: org.eclipse.core.filesystem;bundle-version="1.3.200",
org.eclipse.core.resources;bundle-version="3.8.0",
org.eclipse.debug.core;bundle-version="3.7.100"
Import-Package: org.eclipse.tcf.core;version="1.1.0",
- org.eclipse.tcf.osgi;version="1.1.0",
- org.eclipse.tcf.osgi.services;version="1.1.0",
org.eclipse.tcf.protocol;version="1.1.0",
org.eclipse.tcf.services;version="1.1.0",
org.eclipse.tcf.util;version="1.1.0"
diff --git a/plugins/org.eclipse.tcf.debug/src/org/eclipse/tcf/internal/debug/launch/TCFLaunchDelegate.java b/plugins/org.eclipse.tcf.debug/src/org/eclipse/tcf/internal/debug/launch/TCFLaunchDelegate.java
index 0db308379..7c1b47ef0 100644
--- a/plugins/org.eclipse.tcf.debug/src/org/eclipse/tcf/internal/debug/launch/TCFLaunchDelegate.java
+++ b/plugins/org.eclipse.tcf.debug/src/org/eclipse/tcf/internal/debug/launch/TCFLaunchDelegate.java
@@ -32,9 +32,6 @@ import org.eclipse.tcf.internal.debug.Activator;
import org.eclipse.tcf.internal.debug.model.ITCFConstants;
import org.eclipse.tcf.internal.debug.model.TCFLaunch;
import org.eclipse.tcf.internal.debug.model.TCFMemoryRegion;
-import org.eclipse.tcf.osgi.OSGIServices;
-import org.eclipse.tcf.osgi.services.IValueAddService;
-import org.eclipse.tcf.protocol.IPeer;
import org.eclipse.tcf.protocol.JSON;
import org.eclipse.tcf.protocol.Protocol;
import org.eclipse.tcf.services.IMemoryMap;
@@ -326,25 +323,9 @@ public class TCFLaunchDelegate extends LaunchConfigurationDelegate {
if (monitor != null) monitor.beginTask("Launching TCF debugger session", task_cnt); //$NON-NLS-1$
final String id = configuration.getAttribute(ATTR_USE_LOCAL_AGENT, true) ? local_id : configuration.getAttribute(ATTR_PEER_ID, "");
- final IValueAddService value_add_service = OSGIServices.getValueAddService();
Protocol.invokeLater(new Runnable() {
public void run() {
- // If the id is not a redirection path of itself, and a value-add service is registered,
- // ask the value-add service for the redirection path
- if (value_add_service != null && id.indexOf('/') < 0) {
- IPeer peer = Protocol.getLocator().getPeers().get(id);
- if (peer != null) {
- value_add_service.getRedirectionPath(peer, new IValueAddService.DoneGetRedirectionPath() {
- public void doneGetRedirectionPath(Throwable error, String redirection_path) {
- if (error != null || redirection_path == null) redirection_path = id;
- ((TCFLaunch)launch).launchTCF(mode, redirection_path);
- if (monitor != null) monitor.done();
- }
- });
- return;
- }
- }
((TCFLaunch)launch).launchTCF(mode, id);
if (monitor != null) monitor.done();
}
diff --git a/plugins/org.eclipse.tcf.debug/src/org/eclipse/tcf/internal/debug/model/TCFLaunch.java b/plugins/org.eclipse.tcf.debug/src/org/eclipse/tcf/internal/debug/model/TCFLaunch.java
index f3b8f590d..6e231ffb0 100644
--- a/plugins/org.eclipse.tcf.debug/src/org/eclipse/tcf/internal/debug/model/TCFLaunch.java
+++ b/plugins/org.eclipse.tcf.debug/src/org/eclipse/tcf/internal/debug/model/TCFLaunch.java
@@ -39,12 +39,12 @@ import org.eclipse.tcf.protocol.IPeer;
import org.eclipse.tcf.protocol.IService;
import org.eclipse.tcf.protocol.IToken;
import org.eclipse.tcf.protocol.Protocol;
+import org.eclipse.tcf.services.IContextQuery;
import org.eclipse.tcf.services.IFileSystem;
import org.eclipse.tcf.services.IFileSystem.FileSystemException;
import org.eclipse.tcf.services.IFileSystem.IFileHandle;
import org.eclipse.tcf.services.IMemory;
import org.eclipse.tcf.services.IMemory.MemoryContext;
-import org.eclipse.tcf.services.IContextQuery;
import org.eclipse.tcf.services.IMemoryMap;
import org.eclipse.tcf.services.IPathMap;
import org.eclipse.tcf.services.IProcesses;
@@ -999,6 +999,7 @@ public class TCFLaunch extends Launch {
listeners_array = null;
}
+ @Override
public void launchConfigurationChanged(final ILaunchConfiguration cfg) {
super.launchConfigurationChanged(cfg);
if (!cfg.equals(getLaunchConfiguration())) return;
@@ -1144,14 +1145,17 @@ public class TCFLaunch extends Launch {
return channel.getRemoteService(cls);
}
+ @Override
public boolean canDisconnect() {
return !disconnected;
}
+ @Override
public boolean isDisconnected() {
return disconnected;
}
+ @Override
public void disconnect() throws DebugException {
try {
new TCFTask<Boolean>() {
@@ -1170,14 +1174,17 @@ public class TCFLaunch extends Launch {
}
}
+ @Override
public boolean canTerminate() {
return false;
}
+ @Override
public boolean isTerminated() {
return disconnected;
}
+ @Override
public void terminate() throws DebugException {
}
@@ -1284,6 +1291,57 @@ public class TCFLaunch extends Launch {
}
}
+ /**
+ * Activate TCF launch: Re-use the passed in communication channel and perform all necessary launch steps.
+ *
+ * @param mode - on of launch mode constants defined in ILaunchManager.
+ * @param peer_name - TCF peer name.
+ * @param channel - TCF communication channel.
+ */
+ public void launchTCF(String mode, String peer_name, IChannel channel) {
+ assert Protocol.isDispatchThread();
+ this.mode = mode;
+ this.redirection_path.clear();
+ try {
+ if (channel == null || channel.getRemotePeer() == null) throw new IOException("Invalid channel");
+ this.peer_name = peer_name;
+ this.channel = channel;
+
+ IChannel.IChannelListener listener = new IChannel.IChannelListener() {
+
+ public void onChannelOpened() {
+ try {
+ TCFLaunch.this.peer_name = getPeer().getName();
+ onConnected();
+ }
+ catch (Throwable x) {
+ TCFLaunch.this.channel.terminate(x);
+ }
+ }
+
+ public void congestionLevel(int level) {
+ }
+
+ public void onChannelClosed(Throwable error) {
+ TCFLaunch.this.channel.removeChannelListener(this);
+ onDisconnected(error);
+ }
+
+ };
+ channel.addChannelListener(listener);
+
+ connecting = true;
+ if (channel.getState() == IChannel.STATE_OPEN) {
+ listener.onChannelOpened();
+ } else if (channel.getState() != IChannel.STATE_OPENING) {
+ throw new IOException("Channel is in invalid state");
+ }
+ }
+ catch (Throwable e) {
+ onDisconnected(e);
+ }
+ }
+
/****************************************************************************************************************/
private long getActionTimeStamp(String id) {
diff --git a/plugins/org.eclipse.tcf/META-INF/MANIFEST.MF b/plugins/org.eclipse.tcf/META-INF/MANIFEST.MF
index 8e4654e41..de77b1728 100644
--- a/plugins/org.eclipse.tcf/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.tcf/META-INF/MANIFEST.MF
@@ -12,6 +12,4 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="3.8.0"
Bundle-Activator: org.eclipse.tcf.Activator
Import-Package: org.eclipse.tcf.core;version="1.1.0",
org.eclipse.tcf.protocol;version="1.1.0"
-Export-Package: org.eclipse.tcf.ssl;version="1.1.0",
- org.eclipse.tcf.osgi;version="1.1.0",
- org.eclipse.tcf.osgi.services;version="1.1.0"
+Export-Package: org.eclipse.tcf.ssl;version="1.1.0"
diff --git a/plugins/org.eclipse.tcf/src/org/eclipse/tcf/Activator.java b/plugins/org.eclipse.tcf/src/org/eclipse/tcf/Activator.java
index aa187a7e1..978da4652 100644
--- a/plugins/org.eclipse.tcf/src/org/eclipse/tcf/Activator.java
+++ b/plugins/org.eclipse.tcf/src/org/eclipse/tcf/Activator.java
@@ -22,7 +22,6 @@ import org.eclipse.core.runtime.Status;
import org.eclipse.osgi.util.NLS;
import org.eclipse.tcf.core.ChannelTCP;
import org.eclipse.tcf.internal.nls.TcfPluginMessages;
-import org.eclipse.tcf.osgi.OSGIServices;
import org.eclipse.tcf.protocol.ILogger;
import org.eclipse.tcf.protocol.IServiceProvider;
import org.eclipse.tcf.protocol.Protocol;
@@ -80,7 +79,6 @@ public class Activator extends Plugin {
@Override
public void start(BundleContext context) throws Exception {
super.start(context);
- OSGIServices.getInstance().start(context);
debug = Platform.inDebugMode();
TRACE = "true".equals(Platform.getDebugOption("org.eclipse.tcf/debug")); //$NON-NLS-1$
@@ -129,7 +127,6 @@ public class Activator extends Plugin {
public void stop(BundleContext context) throws Exception {
context.removeBundleListener(bundle_listener);
queue.shutdown();
- OSGIServices.getInstance().stop(context);
plugin = null;
super.stop(context);
}
diff --git a/plugins/org.eclipse.tcf/src/org/eclipse/tcf/osgi/OSGIServices.java b/plugins/org.eclipse.tcf/src/org/eclipse/tcf/osgi/OSGIServices.java
deleted file mode 100644
index 030e4e807..000000000
--- a/plugins/org.eclipse.tcf/src/org/eclipse/tcf/osgi/OSGIServices.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012 Wind River Systems, Inc. and others. All rights reserved.
- * This program and the accompanying materials are made available under the terms
- * of the Eclipse Public License v1.0 which accompanies this distribution, and is
- * available at http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Wind River Systems - initial API and implementation
- *******************************************************************************/
-package org.eclipse.tcf.osgi;
-
-import org.eclipse.tcf.osgi.services.IValueAddService;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import org.osgi.util.tracker.ServiceTracker;
-
-/**
- * OSGi service manager implementation.
- */
-public class OSGIServices implements BundleActivator {
- // Reference to the value-add service tracker
- private ServiceTracker<IValueAddService, IValueAddService> valueAddServiceTracker = null;
-
- /*
- * Thread save singleton instance creation.
- */
- private static class LazyInstance {
- public static OSGIServices instance = new OSGIServices();
- }
-
- /**
- * Constructor.
- */
- /* default */ OSGIServices() {
- super();
- }
-
- /**
- * Returns the singleton instance of the extension point manager.
- */
- public static OSGIServices getInstance() {
- return LazyInstance.instance;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
- */
- public void start(BundleContext context) throws Exception {
- /*
- * Register the service tracker for the value-add service.
- */
- valueAddServiceTracker = new ServiceTracker<IValueAddService, IValueAddService>(context, IValueAddService.class, null);
- valueAddServiceTracker.open();
- }
-
- /* (non-Javadoc)
- * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
- */
- public void stop(BundleContext context) throws Exception {
- valueAddServiceTracker.close();
- valueAddServiceTracker = null;
- }
-
- /**
- * Returns the value-add service if registered.
- *
- * @return The value-add service instance or <code>null</code>.
- */
- public static IValueAddService getValueAddService() {
- return getInstance().valueAddServiceTracker != null ? getInstance().valueAddServiceTracker.getService() : null;
- }
-}
diff --git a/plugins/org.eclipse.tcf/src/org/eclipse/tcf/osgi/services/IValueAddService.java b/plugins/org.eclipse.tcf/src/org/eclipse/tcf/osgi/services/IValueAddService.java
deleted file mode 100644
index 0febb5c3e..000000000
--- a/plugins/org.eclipse.tcf/src/org/eclipse/tcf/osgi/services/IValueAddService.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012 Wind River Systems, Inc. and others. All rights reserved.
- * This program and the accompanying materials are made available under the terms
- * of the Eclipse Public License v1.0 which accompanies this distribution, and is
- * available at http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Wind River Systems - initial API and implementation
- *******************************************************************************/
-package org.eclipse.tcf.osgi.services;
-
-import org.eclipse.tcf.protocol.IPeer;
-
-/**
- * A service whose purpose is to provide value-add related information for a
- * given peer.
- */
-public interface IValueAddService {
-
- /**
- * Returns the redirection path to use for the given peer. The redirection
- * path is encoded as string where the id's to redirect the communication
- * through, are separated by '/'.
- * <p>
- * If there are no value-adds to redirect through, the passed in peer id is
- * returned as is.
- * <p>
- * If there are value-add's to redirect through, the passed in peer id will
- * be prefixed with the value-add id's to redirect through.
- *
- * @param peerId The peer id. Must not be <code>null</code>.
- * @param done The client callback. Must not be <code>null</code>.
- */
- public void getRedirectionPath(IPeer peer, DoneGetRedirectionPath done);
-
- /**
- * Client call back interface for getRedirectionPath(...).
- */
- interface DoneGetRedirectionPath {
- /**
- * Called when the redirection path has been fully determined.
- *
- * @param error The error description if operation failed, <code>null</code> if succeeded.
- * @param redirectionPath The redirection path or <code>null</code>.
- */
- void doneGetRedirectionPath(Throwable error, String redirectionPath);
-}
-}

Back to the top