JxioConnection Protocol Explained - accelio/JXIO GitHub Wiki

JxioConnection Connection Flows

JxioConnection InputStream will handle transferring of data from the server to the client. For that it will allocates multiple large (64K bytes) IN buffers from the JXIO MsgPool. The OutputStream implementation will handle transferring of data from the client to the server. For that it will allocates multiple large (64K bytes) OUT buffers from the JXIO MsgPool.

JxioConnection Data Flows

A JXIO Msg has 'In' and 'Out' Byte Buffers used to hold data. Depending on the data stream direction these buffers are allocated such that one side is of 64K byte size and used for holding the RDMA data and the other buffer direction is used as a token (aka 'credit') to indicate ready-to-send/recv.
JXIO maps the Java data transfers commands to RDMA READ/WRITE operations when message size is larger than 512 bytes. Else it will use RDMA SEND/RECV operations (for the 'credit').

The getInputStream() and getOutputStream() API will initiate the JXIO/AccelIO resource allocation and connection establishment to the server side in a non-blocking method.

JxioConnection InputStream Data Flows

The InputStream implementation will immediately transfer all the internal ready-to-recv buffer tokens to the server so it can start preparing data to stream back to the client side. The server application callbacks will When the connection is established, JXIO/AccelIO will automatically

JxioConnection OutputStream Data Flows

Back to JxioConnection Explained