Class BinaryCodec

  • All Implemented Interfaces:
    MessageCodec<ByteBuffer>

    public final class BinaryCodec
    extends Object
    implements MessageCodec<ByteBuffer>
    A MessageCodec using unencoded binary messages, represented as ByteBuffers.

    This codec is guaranteed to be compatible with the corresponding BinaryCodec on the Dart side. These parts of the Flutter SDK are evolved synchronously.

    On the Dart side, messages are represented using ByteData.

    • Field Detail

      • INSTANCE_DIRECT

        public static final BinaryCodec INSTANCE_DIRECT
        A BinaryCodec that returns direct ByteBuffers from `decodeMessage` for better performance.
        See Also:
        BinaryCodec(boolean)
    • Method Detail

      • encodeMessage

        public ByteBuffer encodeMessage​(@Nullable
                                        ByteBuffer message)
        Description copied from interface: MessageCodec
        Encodes the specified message into binary.
        Specified by:
        encodeMessage in interface MessageCodec<ByteBuffer>
        Parameters:
        message - the T message, possibly null.
        Returns:
        a ByteBuffer containing the encoding between position 0 and the current position, or null, if message is null.
      • decodeMessage

        public ByteBuffer decodeMessage​(@Nullable
                                        ByteBuffer message)
        Description copied from interface: MessageCodec
        Decodes the specified message from binary.

        Warning: The ByteBuffer is "direct" and it won't be valid beyond this call. Storing the ByteBuffer and using it later and will lead to a java.nio.BufferUnderflowException. If you want to retain the data you'll need to copy it.

        Specified by:
        decodeMessage in interface MessageCodec<ByteBuffer>
        Parameters:
        message - the ByteBuffer message, possibly null.
        Returns:
        a T value representation of the bytes between the given buffer's current position and its limit, or null, if message is null.