--- old/src/java.base/share/classes/sun/net/ExtendedOptionsImpl.java 2016-02-24 13:34:28.520280915 +0530 +++ new/src/java.base/share/classes/sun/net/ExtendedOptionsImpl.java 2016-02-24 13:34:28.396280914 +0530 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,15 +27,9 @@ import java.net.*; import jdk.net.*; -import java.io.IOException; import java.io.FileDescriptor; import java.security.PrivilegedAction; import java.security.AccessController; -import java.lang.reflect.Field; -import java.util.Set; -import java.util.HashSet; -import java.util.HashMap; -import java.util.Collections; /** * Contains the native implementation for extended socket options @@ -80,6 +74,19 @@ } private static native void init(); + private static volatile boolean checkedQuickAck; + private static volatile boolean isQuickAckAvailable; + /** + * Tells whether SO_QUICKACK is supported. + * @return + */ + public static boolean isQuickAckAvailable() { + if (!checkedQuickAck) { + isQuickAckAvailable = isQuickAckAvailable0(); + checkedQuickAck = true; + } + return isQuickAckAvailable; + } /* * Extension native implementations @@ -89,4 +96,9 @@ public static native void setFlowOption(FileDescriptor fd, SocketFlow f); public static native void getFlowOption(FileDescriptor fd, SocketFlow f); public static native boolean flowSupported(); + + /* SO_QUICKACK */ + public static native void setQuickAckOption(FileDescriptor fd, boolean on); + public static native Object getQuickAckOption(FileDescriptor fd); + private static native boolean isQuickAckAvailable0(); }