@Override public void connect(Map<String, String> arguments, IProgressMonitor monitor, ILaunch launch) throws CoreException { if (monitor == null) { monitor = new NullProgressMonitor(); } monitor.subTask(LaunchingMessages.SocketListenConnector_2); ListeningConnector connector= getListeningConnector(); String portNumberString = arguments.get("port"); //$NON-NLS-1$ if (portNumberString == null) { abort(LaunchingMessages.SocketAttachConnector_Port_unspecified_for_remote_connection__2, null, IJavaLaunchConfigurationConstants.ERR_UNSPECIFIED_PORT); } Map<String, Connector.Argument> acceptArguments = connector.defaultArguments(); Connector.Argument param= acceptArguments.get("port"); //$NON-NLS-1$ param.setValue(portNumberString); // retain default behaviour to accept 1 connection only int connectionLimit = 1; if (arguments.containsKey("connectionLimit")) { //$NON-NLS-1$ connectionLimit = Integer.valueOf(arguments.get("connectionLimit")); //$NON-NLS-1$ } try { monitor.subTask(NLS.bind(LaunchingMessages.SocketListenConnector_3, new String[]{portNumberString})); connector.startListening(acceptArguments); SocketListenConnectorProcess process = new SocketListenConnectorProcess(launch, portNumberString, connectionLimit); process.waitForConnection(connector, acceptArguments); } catch (IOException e) { abort(LaunchingMessages.SocketListenConnector_4, e, IJavaLaunchConfigurationConstants.ERR_REMOTE_VM_CONNECTION_FAILED); } catch (IllegalConnectorArgumentsException e) { abort(LaunchingMessages.SocketListenConnector_4, e, IJavaLaunchConfigurationConstants.ERR_REMOTE_VM_CONNECTION_FAILED); } }
monitor.subTask(NLS.bind(LaunchingMessages.SocketListenConnector_3, new String[]{portNumberString})); connector.startListening(acceptArguments); SocketListenConnectorProcess process = new SocketListenConnectorProcess(launch,portNumberString); launch.addProcess(process); process.waitForConnection(connector, acceptArguments);