| /* |
| * Copyright 2000-2009 JetBrains s.r.o. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package com.intellij.execution.configurations; |
| |
| import org.jetbrains.annotations.NonNls; |
| |
| import java.net.InetAddress; |
| import java.net.UnknownHostException; |
| |
| public class RemoteConnection { |
| private boolean myUseSockets; |
| private boolean myServerMode; |
| private String myHostName; |
| private String myAddress; |
| public static final String ONTHROW = ",onthrow=<FQ exception class name>"; |
| public static final String ONUNCAUGHT = ",onuncaught=<y/n>"; |
| |
| public RemoteConnection(boolean useSockets, String hostName, String address, boolean serverMode) { |
| myUseSockets = useSockets; |
| myServerMode = serverMode; |
| myHostName = hostName; |
| myAddress = address; |
| } |
| |
| public boolean isUseSockets() { |
| return myUseSockets; |
| } |
| |
| public boolean isServerMode() { |
| return myServerMode; |
| } |
| |
| public String getHostName() { |
| return myHostName; |
| } |
| |
| public String getAddress() { |
| return myAddress; |
| } |
| |
| |
| public void setUseSockets(boolean useSockets) { |
| myUseSockets = useSockets; |
| } |
| |
| public void setServerMode(boolean serverMode) { |
| myServerMode = serverMode; |
| } |
| |
| public void setHostName(String hostName) { |
| myHostName = hostName; |
| } |
| |
| public void setAddress(String address) { |
| myAddress = address; |
| } |
| |
| public String getLaunchCommandLine() { |
| final String address = getAddress(); |
| final boolean shmem = !isUseSockets(); |
| final boolean serverMode = isServerMode(); |
| |
| @NonNls String result; |
| if (shmem) { |
| if (serverMode) { |
| result = "-Xdebug -Xrunjdwp:transport=dt_shmem,server=n,address=" + |
| ((address.length() > 0)? address : "...") + ",suspend=y" + ONTHROW + ONUNCAUGHT; |
| } |
| else { |
| result = "-Xdebug -Xrunjdwp:transport=dt_shmem,server=y,suspend=n,address=" + |
| ((address.length() > 0)? address : "..."); |
| } |
| } |
| else { // socket transport |
| int p = -1; |
| try { |
| p = Integer.parseInt(address); |
| } |
| catch (NumberFormatException e) { |
| } |
| if (serverMode) { |
| String localHostName = "<host name>:"; |
| try { |
| final InetAddress localAddress = InetAddress.getLocalHost(); |
| final String name = localAddress.getCanonicalHostName(); |
| if (name != null) { |
| localHostName = name + ":"; |
| } |
| } |
| catch (UnknownHostException e) { |
| } |
| result = "-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=" + localHostName + |
| ((p == -1)? "<port>" : Integer.toString(p)) + ",suspend=y" + ONTHROW + ONUNCAUGHT; |
| } |
| else { |
| result = "-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=" + |
| ((p == -1)? "..." : Integer.toString(p)); |
| } |
| } |
| return result; |
| } |
| } |