src/java.base/share/classes/java/net/SocketImpl.java
branchniosocketimpl-branch
changeset 57174 899641440751
parent 57173 6692e71a4e9f
child 57176 726630bc6a4c
equal deleted inserted replaced
57173:6692e71a4e9f 57174:899641440751
    27 
    27 
    28 import java.io.FileDescriptor;
    28 import java.io.FileDescriptor;
    29 import java.io.IOException;
    29 import java.io.IOException;
    30 import java.io.InputStream;
    30 import java.io.InputStream;
    31 import java.io.OutputStream;
    31 import java.io.OutputStream;
       
    32 import java.security.AccessController;
       
    33 import java.security.PrivilegedAction;
    32 import java.util.Set;
    34 import java.util.Set;
    33 
    35 
       
    36 import sun.net.NetProperties;
    34 import sun.nio.ch.NioSocketImpl;
    37 import sun.nio.ch.NioSocketImpl;
    35 import sun.security.action.GetPropertyAction;
    38 import sun.security.action.GetPropertyAction;
    36 
    39 
    37 /**
    40 /**
    38  * The abstract class {@code SocketImpl} is a common superclass
    41  * The abstract class {@code SocketImpl} is a common superclass
    47  */
    50  */
    48 public abstract class SocketImpl implements SocketOptions {
    51 public abstract class SocketImpl implements SocketOptions {
    49     private static final boolean USE_PLAINSOCKETIMPL = usePlainSocketImpl();
    52     private static final boolean USE_PLAINSOCKETIMPL = usePlainSocketImpl();
    50 
    53 
    51     private static boolean usePlainSocketImpl() {
    54     private static boolean usePlainSocketImpl() {
    52         String s = GetPropertyAction.privilegedGetProperty("jdk.net.socketimpl.default");
    55         String s = GetPropertyAction.privilegedGetProperty("jdk.net.usePlainSocketImpl");
    53         return "classic".equalsIgnoreCase(s);
    56         if (s != null && !"false".equalsIgnoreCase(s))
       
    57             return true;
       
    58 
       
    59         PrivilegedAction<String> pa = () -> NetProperties.get("jdk.net.socketimpl.default");
       
    60         s = AccessController.doPrivileged(pa);
       
    61         return (s != null) && "classic".equalsIgnoreCase(s);
    54     }
    62     }
    55 
    63 
    56     /**
    64     /**
    57      * Creates a instance of platform's SocketImpl
    65      * Creates a instance of platform's SocketImpl
    58      */
    66      */
       
    67     @SuppressWarnings("unchecked")
    59     static SocketImpl createSocketImpl(boolean server) {
    68     static SocketImpl createSocketImpl(boolean server) {
    60         if (USE_PLAINSOCKETIMPL) {
    69         if (USE_PLAINSOCKETIMPL) {
    61             return new PlainSocketImpl();
    70             return new PlainSocketImpl();
    62         } else {
    71         } else {
    63             return new NioSocketImpl(server);
    72             return new NioSocketImpl(server);