adding rsockets support into JDK

Lu, Yingqi yingqi.lu at intel.com
Wed Jan 30 16:07:44 UTC 2019


Hi Chris,

The description reads very nice! Thank you for all the help!

I can try to extend the test a little to check on the impl note today.

Thanks,
Lucy

Sent from my iPhone

On Jan 30, 2019, at 7:02 AM, Chris Hegarty <chris.hegarty at oracle.com<mailto:chris.hegarty at oracle.com>> wrote:

I've taken into account both Brian and Alan's comments. The class-level
description now reads as follows:

/**
 * Factory methods for creating RDMA-based TCP sockets and socket channels.
 *
 * <p>The {@link #openSocket(ProtocolFamily) openSocket} and {@link
 * #openServerSocket(ProtocolFamily) openServerSocket} methods create RDMA-based
 * TCP sockets.
 *
 * <p>The {@link #openSelector() openSelector}, {@link
 * #openSocketChannel(ProtocolFamily) openSocketChannel}, and {@link
 * #openServerSocketChannel(ProtocolFamily) openServerSocketChannel} methods
 * create selectors and selectable channels for use with RDMA sockets. These
 * selectors and channels are created by the RDMA selector provider, which is
 * not the {@linkplain SelectorProvider#provider() default} system-wide selector
 * provider. Consequently, selectable channels to RDMA sockets may not be
 * multiplexed with selectable channels created by the default system-wide
 * selector provider. The RDMA selector provider does not support datagram
 * channels or pipes. Its {@link SelectorProvider#openDatagramChannel
 * openDatagramChannel} and {@link SelectorProvider#openPipe openPipe} methods
 * throw {@link UnsupportedOperationException UnsupportedOperationException}.
 *
 * @implNote The RDMA selector provider supports socket channels of type
 * {@link StandardProtocolFamily#INET INET} and {@link
 * StandardProtocolFamily#INET6 INET6}. Its {@link
 * SelectorProvider#openSocketChannel() openSocketChannel} and {@link
 * SelectorProvider#openServerSocketChannel() openServerSocketChannel}
 * methods create selectable channels with a family of {@link
 * StandardProtocolFamily#INET6 INET6}, if the underlying platform supports
 * IPv6. Otherwise, it creates selectable channels with a family of {@link
 * StandardProtocolFamily#INET INET}.
 *
 * @since 13
 */

 I pushed this to the sandbox [1], along with a test ( the test could be
 expanded a little to check the impl note, but that can be done as a
 follow-up ).

 -Chris.

[1] http://hg.openjdk.java.net/jdk/sandbox/rev/919516f93dcf

On 29 Jan 2019, at 19:22, Brian Burkhalter <brian.burkhalter at oracle.com<mailto:brian.burkhalter at oracle.com>> wrote:


On Jan 29, 2019, at 6:55 AM, Alan Bateman <Alan.Bateman at oracle.com<mailto:Alan.Bateman at oracle.com>> wrote:

The part of the spec that talks about the SelectorProvider is still
relevant, even though the provider is not directly accessible from the
RdmaSockets class.

The SelectorProvider is indirectly accessible from a Selector or
AbstractSelectableChannel, e.g.:
  SelectorProvider sp = RdmaSockets.openSelector().provider();
  SelectorProvider sp = RdmaSockets.openSocketChannel(INET).provider();

Ah, of course.

Right, this is reason for the wording in the class description. I think I provided these sentences for the javadoc a few months ago.

By the same token, perhaps the first sentence of the RDMASockets class description should be changed from

"Factory methods for creating RDMA-based TCP sockets and channels.”

to

"Factory methods for creating RDMA-based TCP sockets and socket channels.”

Also, and this is being picky, the “Its” in "Its selector provider does not support datagram channels and pipes.” reads a little awkward to me. Maybe instead something like this?:

“The RDMA selector provider also does not support datagram channels and pipes. Its openDatagramChannel<file:///Users/bpb/Work/CoreLibs/jdk/sandbox/build/macosx-x86_64-server-release/images/docs/api/java.base/java/nio/channels/spi/SelectorProvider.html#openDatagramChannel()> and openPipe<file:///Users/bpb/Work/CoreLibs/jdk/sandbox/build/macosx-x86_64-server-release/images/docs/api/java.base/java/nio/channels/spi/SelectorProvider.html#openPipe()> methods throw UnsupportedOperationException<file:///Users/bpb/Work/CoreLibs/jdk/sandbox/build/macosx-x86_64-server-release/images/docs/api/java.base/java/lang/UnsupportedOperationException.html>.”

Brian

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/nio-dev/attachments/20190130/30bedc8b/attachment-0001.html>


More information about the nio-dev mailing list