接口 MessageReader<H extends MessageHeader,​M extends Message>

    • 方法详细资料

      • readHeader

        H readHeader()
              throws IOException
        Read the next message header from server, possibly blocking indefinitely until the message is received.
        返回:
        MessageHeader of the next message
        抛出:
        IOException - if an error occurs
      • probeHeader

        default H probeHeader()
                       throws IOException
        Read the next message header from server, possibly blocking indefinitely until the message is received, and cache it so that the next readHeader() return the same header.
        返回:
        MessageHeader of the next message
        抛出:
        IOException - if an error occurs
      • readMessage

        M readMessage​(Optional<M> reuse,
                      H header)
               throws IOException
        Read message from server into to the given Message instance or into the new one if not present. For asynchronous channel it synchronously reads the next message in the stream, blocking until the message is read fully. Could throw CJCommunicationsException wrapping an IOException during read or parse
        参数:
        reuse - Message object to reuse. May be ignored by implementation.
        header - MessageHeader instance
        返回:
        Message instance
        抛出:
        IOException - if an error occurs
      • probeMessage

        default M probeMessage​(Optional<M> reuse,
                               H header)
                        throws IOException
        Read message from server into to the given Message instance or into the new one if not present and cache it so that the next readMessage(Optional, MessageHeader) return the same message. For asynchronous channel it synchronously reads the next message in the stream, blocking until the message is read fully. Could throw CJCommunicationsException wrapping an IOException during read or parse
        参数:
        reuse - Message object to reuse. May be ignored by implementation.
        header - MessageHeader instance
        返回:
        Message instance
        抛出:
        IOException - if an error occurs
      • readMessage

        default M readMessage​(Optional<M> reuse,
                              int expectedType)
                       throws IOException
        Read message from server into to the given Message instance or into the new one if not present. For asynchronous channel it synchronously reads the next message in the stream, blocking until the message is read fully. Could throw WrongArgumentException if the expected message type is not the next message (exception will be thrown in *caller* context).
        参数:
        reuse - Message object to reuse. May be ignored by implementation.
        expectedType - Expected type of message.
        返回:
        Message instance
        抛出:
        IOException - if an error occurs
      • getMessageSequence

        default byte getMessageSequence()
        Get last message sequence number, as it was stored by readHeader().
        返回:
        number
      • resetMessageSequence

        default void resetMessageSequence()
        Set stored message sequence number to 0.
      • undecorate

        default MessageReader<H,​M> undecorate()
        Return the previous MessageReader instance from the decorators chain or the current MessageReader if it is the first entry in a chain.
        返回:
        MessageReader
      • start

        default void start()
        Start reading messages reader from the provided channel.
      • stopAfterNextMessage

        default void stopAfterNextMessage()
        Signal to the reader that it should stop reading messages after reading the next message.