Class SslRxSocket

    • Method Detail

      • handshake

        public Completable handshake()
        Returns a Completable representing the completion status of the initial SSL handshake, which completes once the handshake completes or fails with an error if the handshake fails for some reason. Handshaking starts as soon as the connection is created and only occurs once during the lifetime of the connection. Thus, the returned completable is a "hot" completable: subscribing to it multiple times always yields the same result.
        Returns:
        A Completable representing the completion status of the initial SSL handshake.
      • read

        public Single<ByteBuffer> read​(Supplier<ByteBuffer> bufferSupplier)
        Description copied from interface: RxSocket
        Returns a "cold" Single which will read the next message from the network each time it is subscribed. Read operations cannot be cancelled: cancelling/disposing a subscription has no effect, and will not close the underlying socket.

        Socket implementations must buffer incoming messages until they are read. Note that invoking this method multiple times returns the same Single instance. The returned Single will not allow multiple concurrent subscriptions as this will result in non-deterministic behavior. Attempts to have multiple concurrent subscriptions will result in an IllegalStateException.

        Subscribers will be notified when the socket is closed through SingleObserver.onError(Throwable) with the corresponding IOException providing the reason for the disconnection. In particular, if the socket is closed locally via RxSocket.close() then it will be notified with RxSocket.LOCAL_CLOSE, if it is closed locally via RxSocket.closeWithReason(java.lang.Throwable) then it will be notified using the provided exception and finally, if it is closed remotely by the peer, then it will be notified using RxSocket.REMOTE_CLOSE. Low-level network transports should return a SocketTimeoutException for communicating any network timeouts. Application layers may return exceptions which are more closely aligned to their APIs.

        Specified by:
        read in interface RxSocket<ByteBuffer>
        Specified by:
        read in class TransformedRxSocket<ByteBuffer,​ByteBuffer>
        Parameters:
        bufferSupplier - An optional buffer supplier which may be used by the transport to reduce copying between transport layers. Use null when the transport does not support buffer suppliers or if the transport should allocate its own buffer. Note that the buffer supplier may be called multiple times in order to complete a single read.
        Returns:
        A "cold" Single which will be signalled once the read operation completes or fails.
      • write

        public Completable write​(ByteBuffer packet)
        Description copied from interface: RxSocket
        Returns a "cold" Completable which will write the provided message to the network each time it is subscribed. Write operations cannot be cancelled reliably, as a consequence cancelling/disposing a subscription has no effect.

        Subscribers will be notified when the socket is closed through CompletableObserver.onError(Throwable) with the corresponding IOException providing the reason for the disconnection. In particular, if the socket is closed locally via RxSocket.close() then it will be notified with RxSocket.LOCAL_CLOSE, if it is closed locally via RxSocket.closeWithReason(java.lang.Throwable) then it will be notified using the provided exception and finally, if it is closed remotely by the peer, then it will be notified using RxSocket.REMOTE_CLOSE. Low-level network transports should return a SocketTimeoutException for communicating any network timeouts. Application layers may return exceptions which are more closely aligned to their APIs.

        This method is thread-safe, atomic and ordered with respect to other write attempts. In particular, consecutive writes will be performed in the order in which they are subscribed.

        Specified by:
        write in interface RxSocket<ByteBuffer>
        Specified by:
        write in class TransformedRxSocket<ByteBuffer,​ByteBuffer>
        Parameters:
        packet - The message to be written to the network.
        Returns:
        A "cold" Completable which will be signalled once the write operation completes or fails.
      • getSslSession

        public SSLSession getSslSession()
        Returns the SSL session currently in use by the underlying connection.
        Returns:
        The SSL session currently in use by the underlying connection.