src/solaris/classes/java/net/PlainSocketImpl.java
Print this page
rev 7398 : 8032808: Support Solaris SO_FLOW_SLA socket option
Reviewed-by: michaelm
*** 24,34 ****
--- 24,40 ----
*/
package java.net;
import java.io.IOException;
import java.io.FileDescriptor;
+ 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
*/
*** 49,58 ****
--- 55,90 ----
*/
PlainSocketImpl(FileDescriptor fd) {
this.fd = fd;
}
+ protected <T> void setOption(SocketOption<T> name, T value) throws IOException {
+ if (!name.equals(ExtendedSocketOptions.SO_FLOW_SLA)) {
+ super.setOption(name, value);
+ } else {
+ if (isClosedOrPending()) {
+ throw new SocketException("Socket closed");
+ }
+ checkSetOptionPermission(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 (isClosedOrPending()) {
+ throw new SocketException("Socket closed");
+ }
+ checkGetOptionPermission(name);
+ SocketFlow flow = SocketFlow.create();
+ getFlowOption(getFileDescriptor(), flow);
+ return (T)flow;
+ }
+
native void socketCreate(boolean isServer) throws IOException;
native void socketConnect(InetAddress address, int port, int timeout)
throws IOException;
*** 75,81 ****
throws SocketException;
native int socketGetOption(int opt, Object iaContainerObj) throws SocketException;
native void socketSendUrgentData(int data) throws IOException;
-
}
--- 107,112 ----