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 ----