Thanks Vyom!

I like it much better now.

The last minorish comment:

src/jdk.net/share/classes/jdk/net/ExtendedSocketOptions.java
Set<SocketOption<?>> options = new HashSet<>(5);

Please note that the constructor of HashSet wants the initial capacity as the argument, not the expected number of elements. So in this case it would be more accurate to have (7), so that 7 * 0.75 = 5.25 > 5. Practically, it wouldn't make any difference, as both 5 and 7 would be rounded up to 8 anyways.

However, I would recommend using the default constructor just to avoid confusion. Or, alternatively, collect the options to an ArrayList of desired capacity and then make unmodifiable set with Set.copyOf(list).

No further comments from my side :)

With kind regards,
Ivan


On 5/12/18 2:21 AM, vyom tewari wrote:
Hi Ivan,

Thanks for review, please find the updated webrev(http://cr.openjdk.java.net/~vtewari/8194298/webrev0.4/index.html). Please find my answers in-line.

Thanks,

vyom


On Saturday 12 May 2018 11:15 AM, Ivan Gerasimov wrote:
Hi Vyom!

1)
src/java.base/share/classes/sun/net/ext/ExtendedSocketOptions.java

Thank you for fixing ExtendingSocketOption.options0().
It may be better to make the returned set unmodifiable, and then Collectors.toUnmodifiableSet could be used for convenience:

return options.stream()
        .filter((option) -> !option.name().startsWith("TCP_"))
        .collect(Collectors.toUnmodifiableSet());

Also, I think Alan suggested to filter out UDP_* options for SOCK_STREAM here.
fixed

2)
src/java.base/unix/classes/java/net/PlainDatagramSocketImpl.java

If you static-import ExtendedSocketOptions.SOCK_DGRAM as in other files, then the line 80 wouldn't become too long.

The same applies to src/java.base/unix/classes/java/net/PlainSocketImpl.java
fixed

3)
src/jdk.net/share/classes/jdk/net/ExtendedSocketOptions.java

Was it intentional that when flowSupported == true, quickAckSupported == false, keepAliveOptSupported == true, the TCP_KEEP* options are *not* added to the resulting set?

If not, then can this set population be organized in more linear way: Just create an ArrayList, conditionally fill it in and return unmodifiable set with Set.of(list.toArray()).
of course not, i don't know but i always prefer complex nested "if-else" then linear ifs :) fixed as well.

Nit: please place the equal sign at line 172 consistently with the other two inits above.
fixed.

With kind regards,
Ivan


On 5/11/18 7:43 PM, vyom tewari wrote:
thanks all for review, please find the latest webrev(http://cr.openjdk.java.net/~vtewari/8194298/webrev0.3/index.html). I address most of the review comments.

Vyom


On Saturday 12 May 2018 12:01 AM, Chris Hegarty wrote:
On 11 May 2018, at 01:04, Alan Bateman <alan.bate...@oracle.com> wrote:
On 10/05/2018 16:21, vyom tewari wrote:
Hi,

Please find the latest webrev(http://cr.openjdk.java.net/~vtewari/8194298/webrev0.2/index.html)
...
It would be better if the channel implementation didn't static import ExtendedSocketOptions.getInstance as that is a very generic method method name. As I mentioned previously, you could simplify all these usages if you add the following to sun.net.ext.ExtendedSocketOption static Set<SocketOption<?>> options(int type) { return getInstance().options(type)); }
+1

A minor comment on tests is that they can use List.of instead of Arrays.asList.
+1

Otherwise, this looks very good.

-Chris.

P.S. A separate issue, but when reviewing this it reminded me that we should deprecate-for-removal jdk/net/Sockets.java. It’s functionality is already supported by a standard API.







--
With kind regards,
Ivan Gerasimov

Reply via email to