src/share/classes/java/net/ServerSocket.java
Print this page
rev 9687 : * * *
*** 28,37 ****
--- 28,39 ----
import java.io.FileDescriptor;
import java.io.IOException;
import java.nio.channels.ServerSocketChannel;
import java.security.AccessController;
import java.security.PrivilegedExceptionAction;
+ import java.util.Set;
+ import java.util.Collections;
/**
* This class implements server sockets. A server socket waits for
* requests to come in over the network. It performs some operation
* based on that request, and then possibly returns a result to the requester.
*** 917,922 ****
--- 919,1014 ----
int bandwidth)
{
/* Not implemented yet */
}
+ /**
+ * Sets the value of a socket option.
+ *
+ * @param name The socket option
+ * @param value The value of the socket option. A value of {@code null}
+ * may be valid for some options.
+ * @return this ServerSocket
+ *
+ * @throws UnsupportedOperationException if the server socket does not
+ * support the option.
+ *
+ * @throws IllegalArgumentException if the value is not valid for
+ * the option.
+ *
+ * @throws IOException if an I/O error occurs, or if the socket is closed.
+ *
+ * @throws NullPointerException if name is {@code null}
+ *
+ * @throws SecurityException if a security manager is set and if the socket
+ * option requires a security permission and if the caller does
+ * not have the required permission.
+ * {@link java.net.StandardSocketOptions StandardSocketOptions}
+ * do not require any security permission.
+ *
+ * @since 1.9
+ */
+ public <T> ServerSocket setOption(SocketOption<T> name, T value)
+ throws IOException
+ {
+ getImpl().setOption(name, value);
+ return this;
+ }
+
+ /**
+ * Returns the value of a socket option.
+ *
+ * @param name The socket option
+ *
+ * @return The value of the socket option.
+ *
+ * @throws UnsupportedOperationException if the server socket does not
+ * support the option.
+ *
+ * @throws IOException if an I/O error occurs, or if the socket is closed.
+ *
+ * @throws NullPointerException if name is {@code null}
+ *
+ * @throws SecurityException if a security manager is set and if the socket
+ * option requires a security permission and if the caller does
+ * not have the required permission.
+ * {@link java.net.StandardSocketOptions StandardSocketOptions}
+ * do not require any security permission.
+ *
+ * @since 1.9
+ */
+ public <T> T getOption(SocketOption<T> name) throws IOException
+ {
+ return getImpl().getOption(name);
+ }
+
+ private static Set<SocketOption<?>> options;
+ private static boolean optionsSet = false;
+
+ /**
+ * Returns a set of the socket options supported by this server socket.
+ *
+ * This method will continue to return the set of options even after
+ * the socket has been closed.
+ *
+ * @return A set of the socket options supported by this socket. This set
+ * may be empty if the socket's SocketImpl cannot be created.
+ *
+ * @since 1.9
+ */
+ public Set<SocketOption<?>> supportedOptions()
+ {
+ synchronized (ServerSocket.class) {
+ if (optionsSet) {
+ return options;
+ }
+ try {
+ SocketImpl impl = getImpl();
+ options = Collections.unmodifiableSet(impl.supportedOptions());
+ } catch (IOException e) {
+ options = Collections.emptySet();
+ }
+ optionsSet = true;
+ return options;
+ }
+ }
}