1 /* 2 * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 package com.sun.tools.jdi; 26 27 import com.sun.jdi.connect.*; 28 import com.sun.jdi.connect.spi.*; 29 import java.util.Map; 30 import java.util.HashMap; 31 import java.io.IOException; 32 33 /* 34 * An ListeningConnector that uses the SocketTransportService 35 */ 36 public class SocketListeningConnector extends GenericListeningConnector { 37 38 static final String ARG_PORT = "port"; 39 static final String ARG_LOCALADDR = "localAddress"; 40 SocketListeningConnector()41 public SocketListeningConnector() { 42 super(new SocketTransportService()); 43 44 addIntegerArgument( 45 ARG_PORT, 46 getString("socket_listening.port.label"), 47 getString("socket_listening.port"), 48 "", 49 false, 50 0, Integer.MAX_VALUE); 51 52 addStringArgument( 53 ARG_LOCALADDR, 54 getString("socket_listening.localaddr.label"), 55 getString("socket_listening.localaddr"), 56 "", // default is wildcard 57 false); 58 59 transport = new Transport() { 60 public String name() { 61 return "dt_socket"; // for compatibility reasons 62 } 63 }; 64 } 65 66 67 public String startListening(Map<String,? extends Connector.Argument> args)68 startListening(Map<String,? extends Connector.Argument> args) 69 throws IOException, IllegalConnectorArgumentsException 70 { 71 String port = argument(ARG_PORT, args).value(); 72 String localaddr = argument(ARG_LOCALADDR, args).value(); 73 74 // default to system chosen port 75 if (port.length() == 0) { 76 port = "0"; 77 } 78 79 if (localaddr.length() > 0) { 80 localaddr = localaddr + ":" + port; 81 } else { 82 localaddr = port; 83 } 84 85 return super.startListening(localaddr, args); 86 } 87 name()88 public String name() { 89 return "com.sun.jdi.SocketListen"; 90 } 91 description()92 public String description() { 93 return getString("socket_listening.description"); 94 } 95 } 96