< prev index next >

src/java.base/unix/classes/java/net/PlainSocketImpl.java

Print this page

        

*** 23,33 **** * questions. */ package java.net; import java.io.IOException; - import java.io.FileDescriptor; import java.util.Set; import java.util.HashSet; import sun.net.ext.ExtendedSocketOptions; /* --- 23,32 ----
*** 47,100 **** */ PlainSocketImpl(boolean isServer) { super(isServer); } - static final ExtendedSocketOptions extendedOptions = - ExtendedSocketOptions.getInstance(); - - protected <T> void setOption(SocketOption<T> name, T value) throws IOException { - if (isClosedOrPending()) { - throw new SocketException("Socket closed"); - } - if (supportedOptions().contains(name)) { - if (extendedOptions.isOptionSupported(name)) { - extendedOptions.setOption(fd, name, value); - } else { - super.setOption(name, value); - } - } else { - throw new UnsupportedOperationException("unsupported option"); - } - } - - @SuppressWarnings("unchecked") - protected <T> T getOption(SocketOption<T> name) throws IOException { - if (isClosedOrPending()) { - throw new SocketException("Socket closed"); - } - if (supportedOptions().contains(name)) { - if (extendedOptions.isOptionSupported(name)) { - return (T) extendedOptions.getOption(fd, name); - } else { - return super.getOption(name); - } - } else { - throw new UnsupportedOperationException("unsupported option"); - } - } - - protected Set<SocketOption<?>> supportedOptions() { - HashSet<SocketOption<?>> options = new HashSet<>(super.supportedOptions()); - if (isServer) { - options.addAll(ExtendedSocketOptions.serverSocketOptions()); - } else { - options.addAll(ExtendedSocketOptions.clientSocketOptions()); - } - return options; - } - protected void socketSetOption(int opt, boolean b, Object val) throws SocketException { if (opt == SocketOptions.SO_REUSEPORT && !supportedOptions().contains(StandardSocketOptions.SO_REUSEPORT)) { throw new UnsupportedOperationException("unsupported option"); } --- 46,55 ----
< prev index next >