On Wed, 14 Oct 2020 11:19:59 GMT, Daniel Fuchs <dfu...@openjdk.org> wrote:
>> Michael McMahon has updated the pull request with a new target base due to a >> merge or a rebase. The incremental webrev >> excludes the unrelated changes brought in by the merge/rebase. The pull >> request contains 22 additional commits since >> the last revision: >> - Merge branch 'master' into unixdomainchannels >> - - reorganised the channel impls back into SocketChannelImpl and >> ServerSocketChannelImpl >> - removed the new Unix domain socket events and folded the behavior into >> the existing socket events >> - implemented other comments from Alan on Oct 11. >> - unixdomainchannels: updates from Chris's review 9 Oct 2020 >> - unixdomainchannels: >> - updated property name >> - added JFR unit test >> - Merge branch 'master' into unixdomainchannels >> - - update after Alan's review on Oct 4 >> - includes API change required by JDK-8251952 >> - original CSR for the overall change will be resubmitted with >> all api changes consolidated based on this update >> - - simplified Copy.gmk to CAT source files directly >> - renamed net.properties source files to all be net.properties >> - unixdomainchannels: error in the last commit in >> make/modules/java.base/Copy.gmk >> - unixdomainchannels: >> (1) rename UnixDomainHelper to UnixDomainSocketsUtil >> (2) remove hardcoded /tmp and /var/tmp paths from UnixDomainSocketsUtil >> (3) replace (2) with documented system/networking properties >> (4) Small update to UnixDomainSocketAddress API >> (5) CSR for (3) and (4) submitted at JDK-8253930 >> (6) Update build to generate net.properties from shared >> net.properties.common >> plus platform specific additions. >> - Merge branch 'master' into unixdomainchannels >> - ... and 12 more: >> https://git.openjdk.java.net/jdk/compare/a9828a5a...7f677d5a > > src/java.base/share/classes/sun/nio/ch/ServerSocketChannelImpl.java line 99: > >> 97: // Binding >> 98: private SocketAddress localAddress; // null => unbound >> 99: > > See my previous comment about parameterization. I think this change (parameterizing the SocketChannelImpl and Server) would be too disruptive for the benefit it provides. > src/java.base/share/classes/sun/nio/ch/SocketChannelImpl.java line 152: > >> 150: this.family = family; >> 151: this.fdVal = IOUtil.fdVal(fd); >> 152: } > > If you introduced: > private static FileDescriptor socketFor(ProtocolFamily family) throws > IOException ... > and > private SocketChannelImpl(SelectorProvider sp, ProtocolFamily family, > FileDescriptor fd) throws IOException { > super(sp); > this.family = family; > this.fd = fd; > this.fdVal = IOUtil.fdVal(fd); > } > then you could move all the checking to `socketFor(ProtocolFamilly)` and > write this constructor as: > SocketChannelImpl(SelectorProvider sp, ProtocolFamily family) throws > IOException { > this(sp, family, sockectFor(family)); > } > which would push all the validation to **before** the object gets constructed. Good idea. ------------- PR: https://git.openjdk.java.net/jdk/pull/52