src/solaris/classes/java/net/PlainDatagramSocketImpl.java
Print this page
rev 9687 : * * *
@@ -23,10 +23,15 @@
* questions.
*/
package java.net;
import java.io.IOException;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.Collections;
+import jdk.net.*;
+import static sun.net.ExtendedOptionsImpl.*;
/*
* On Unix systems we simply delegate to native methods.
*
* @author Chris Hegarty
@@ -36,10 +41,50 @@
{
static {
init();
}
+ protected <T> void setOption(SocketOption<T> name, T value)
+ throws IOException
+ {
+ if (!name.equals(ExtendedSocketOptions.SO_FLOW_SLA)) {
+ super.setOption(name, value);
+ } else {
+ if (isClosed()) {
+ throw new SocketException("Socket closed");
+ }
+ setSecurityCheck(name);
+ checkValueType(value, SocketFlow.class);
+ setFlowOption(getFileDescriptor(), (SocketFlow)value);
+ }
+ }
+
+ protected <T> T getOption(SocketOption<T> name) throws IOException
+ {
+ if (!name.equals(ExtendedSocketOptions.SO_FLOW_SLA)) {
+ return super.getOption(name);
+ }
+ if (isClosed()) {
+ throw new SocketException("Socket closed");
+ }
+ getSecurityCheck(name);
+ SocketFlow flow = SocketFlow.create();
+ getFlowOption(getFileDescriptor(), flow);
+ return (T)flow;
+ }
+
+ protected Set<SocketOption<?>> supportedOptions()
+ {
+ HashSet<SocketOption<?>> options = new HashSet(
+ super.supportedOptions());
+
+ if (flowSupported()) {
+ options.add(ExtendedSocketOptions.SO_FLOW_SLA);
+ }
+ return options;
+ }
+
protected synchronized native void bind0(int lport, InetAddress laddr)
throws SocketException;
protected native void send(DatagramPacket p) throws IOException;