equal
deleted
inserted
replaced
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); |