diff options
Diffstat (limited to 'openjdk/java/net/PlainSocketImpl.java')
-rw-r--r-- | openjdk/java/net/PlainSocketImpl.java | 356 |
1 files changed, 0 insertions, 356 deletions
diff --git a/openjdk/java/net/PlainSocketImpl.java b/openjdk/java/net/PlainSocketImpl.java deleted file mode 100644 index 5b7f850d..00000000 --- a/openjdk/java/net/PlainSocketImpl.java +++ /dev/null @@ -1,356 +0,0 @@ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ -package java.net; - -import java.io.*; -import java.security.PrivilegedAction; - -/* - * This class PlainSocketImpl simply delegates to the appropriate real - * SocketImpl. We do this because PlainSocketImpl is already extended - * by SocksSocketImpl. - * <p> - * There are two possibilities for the real SocketImpl, - * TwoStacksPlainSocketImpl or DualStackPlainSocketImpl. We use - * DualStackPlainSocketImpl on systems that have a dual stack - * TCP implementation. Otherwise we create an instance of - * TwoStacksPlainSocketImpl and delegate to it. - * - * @author Chris Hegarty - */ - -class PlainSocketImpl extends AbstractPlainSocketImpl -{ - private AbstractPlainSocketImpl impl; - - /* the windows version. */ - private static float version; - - /* java.net.preferIPv4Stack */ - private static boolean preferIPv4Stack = false; - - /* If the version supports a dual stack TCP implementation */ - private static boolean useDualStackImpl = false; - - /* sun.net.useExclusiveBind */ - private static String exclBindProp; - - /* True if exclusive binding is on for Windows */ - private static boolean exclusiveBind = true; - - static { - java.security.AccessController.doPrivileged( new PrivilegedAction<Object>() { - public Object run() { - version = 0; - try { - version = Float.parseFloat(System.getProperties().getProperty("os.version")); - preferIPv4Stack = Boolean.parseBoolean( - System.getProperties().getProperty("java.net.preferIPv4Stack")); - exclBindProp = System.getProperty("sun.net.useExclusiveBind"); - } catch (NumberFormatException e ) { - assert false : e; - } - return null; // nothing to return - } }); - - String ipv6 = ikvm.internal.Util.SafeGetEnvironmentVariable("IKVM_IPV6"); - if (ipv6 != null) { - try { - if ((Integer.parseInt(ipv6) & 4) == 0) { - preferIPv4Stack = true; - } else { - useDualStackImpl = true; - } - } catch (NumberFormatException _) { - } - } else if (!InetAddressImplFactory.isIPv6Supported()) { - preferIPv4Stack = true; - } - - // (version >= 6.0) implies Vista or greater. - if (version >= 6.0 && !preferIPv4Stack) { - useDualStackImpl = true; - } - - if (exclBindProp != null) { - // sun.net.useExclusiveBind is true - exclusiveBind = exclBindProp.length() == 0 ? true - : Boolean.parseBoolean(exclBindProp); - } else if (version < 6.0) { - exclusiveBind = false; - } - } - - /** - * Constructs an empty instance. - */ - PlainSocketImpl() { - if (useDualStackImpl) { - impl = new DualStackPlainSocketImpl(exclusiveBind); - } else { - impl = new TwoStacksPlainSocketImpl(exclusiveBind); - } - } - - /** - * Constructs an instance with the given file descriptor. - */ - PlainSocketImpl(FileDescriptor fd) { - if (useDualStackImpl) { - impl = new DualStackPlainSocketImpl(fd, exclusiveBind); - } else { - impl = new TwoStacksPlainSocketImpl(fd, exclusiveBind); - } - } - - // Override methods in SocketImpl that access impl's fields. - - protected FileDescriptor getFileDescriptor() { - return impl.getFileDescriptor(); - } - - protected InetAddress getInetAddress() { - return impl.getInetAddress(); - } - - protected int getPort() { - return impl.getPort(); - } - - protected int getLocalPort() { - return impl.getLocalPort(); - } - - void setSocket(Socket soc) { - impl.setSocket(soc); - } - - Socket getSocket() { - return impl.getSocket(); - } - - void setServerSocket(ServerSocket soc) { - impl.setServerSocket(soc); - } - - ServerSocket getServerSocket() { - return impl.getServerSocket(); - } - - public String toString() { - return impl.toString(); - } - - // Override methods in AbstractPlainSocketImpl that access impl's fields. - - protected synchronized void create(boolean stream) throws IOException { - impl.create(stream); - - // set fd to delegate's fd to be compatible with older releases - this.fd = impl.fd; - } - - protected void connect(String host, int port) - throws UnknownHostException, IOException - { - impl.connect(host, port); - } - - protected void connect(InetAddress address, int port) throws IOException { - impl.connect(address, port); - } - - protected void connect(SocketAddress address, int timeout) throws IOException { - impl.connect(address, timeout); - } - - public void setOption(int opt, Object val) throws SocketException { - impl.setOption(opt, val); - } - - public Object getOption(int opt) throws SocketException { - return impl.getOption(opt); - } - - synchronized void doConnect(InetAddress address, int port, int timeout) throws IOException { - impl.doConnect(address, port, timeout); - } - - protected synchronized void bind(InetAddress address, int lport) - throws IOException - { - impl.bind(address, lport); - } - - protected synchronized void accept(SocketImpl s) throws IOException { - // pass in the real impl not the wrapper. - SocketImpl delegate = ((PlainSocketImpl)s).impl; - delegate.address = new InetAddress(); - delegate.fd = new FileDescriptor(); - impl.accept(delegate); - - // set fd to delegate's fd to be compatible with older releases - s.fd = delegate.fd; - } - - void setFileDescriptor(FileDescriptor fd) { - impl.setFileDescriptor(fd); - } - - void setAddress(InetAddress address) { - impl.setAddress(address); - } - - void setPort(int port) { - impl.setPort(port); - } - - void setLocalPort(int localPort) { - impl.setLocalPort(localPort); - } - - protected synchronized InputStream getInputStream() throws IOException { - return impl.getInputStream(); - } - - void setInputStream(SocketInputStream in) { - impl.setInputStream(in); - } - - protected synchronized OutputStream getOutputStream() throws IOException { - return impl.getOutputStream(); - } - - protected void close() throws IOException { - try { - impl.close(); - } finally { - // set fd to delegate's fd to be compatible with older releases - this.fd = null; - } - } - - void reset() throws IOException { - try { - impl.reset(); - } finally { - // set fd to delegate's fd to be compatible with older releases - this.fd = null; - } - } - - protected void shutdownInput() throws IOException { - impl.shutdownInput(); - } - - protected void shutdownOutput() throws IOException { - impl.shutdownOutput(); - } - - protected void sendUrgentData(int data) throws IOException { - impl.sendUrgentData(data); - } - - FileDescriptor acquireFD() { - return impl.acquireFD(); - } - - void releaseFD() { - impl.releaseFD(); - } - - public boolean isConnectionReset() { - return impl.isConnectionReset(); - } - - public boolean isConnectionResetPending() { - return impl.isConnectionResetPending(); - } - - public void setConnectionReset() { - impl.setConnectionReset(); - } - - public void setConnectionResetPending() { - impl.setConnectionResetPending(); - } - - public boolean isClosedOrPending() { - return impl.isClosedOrPending(); - } - - public int getTimeout() { - return impl.getTimeout(); - } - - // Override methods in AbstractPlainSocketImpl that need to be implemented. - - void socketCreate(boolean isServer) throws IOException { - impl.socketCreate(isServer); - } - - void socketConnect(InetAddress address, int port, int timeout) - throws IOException { - impl.socketConnect(address, port, timeout); - } - - void socketBind(InetAddress address, int port) - throws IOException { - impl.socketBind(address, port); - } - - void socketListen(int count) throws IOException { - impl.socketListen(count); - } - - void socketAccept(SocketImpl s) throws IOException { - impl.socketAccept(s); - } - - int socketAvailable() throws IOException { - return impl.socketAvailable(); - } - - void socketClose0(boolean useDeferredClose) throws IOException { - impl.socketClose0(useDeferredClose); - } - - void socketShutdown(int howto) throws IOException { - impl.socketShutdown(howto); - } - - void socketSetOption(int cmd, boolean on, Object value) - throws SocketException { - socketSetOption(cmd, on, value); - } - - int socketGetOption(int opt, Object iaContainerObj) throws SocketException { - return impl.socketGetOption(opt, iaContainerObj); - } - - void socketSendUrgentData(int data) throws IOException { - impl.socketSendUrgentData(data); - } -} |