Package io.flutter.plugin.common

# Interface MethodCodec

All Known Implementing Classes:
  `JSONMethodCodec`, `StandardMethodCodec`

public interface MethodCodec
A codec for method calls and enveloped results.

Method calls are encoded as binary messages with enough structure that the codec can extract a method name String and an arguments Object. These data items are used to populate a `MethodCall`.

All operations throw `IllegalArgumentException`, if conversion fails.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Object`
  `decodeEnvelope(ByteBuffer envelope)`
  Decodes a result envelope from binary.
  `MethodCall`
  `decodeMethodCall(ByteBuffer methodCall)`
  Decodes a message call from binary.
  `ByteBuffer`
  `encodeErrorEnvelope(String errorCode, String errorMessage, Object errorDetails)`
  Encodes an error result into a binary envelope message.
  `ByteBuffer`
  `encodeErrorEnvelopeWithStacktrace(String errorCode, String errorMessage, Object errorDetails, String errorStacktrace)`
  Encodes an error result into a binary envelope message with the native stacktrace.
  `ByteBuffer`
  `encodeMethodCall(MethodCall methodCall)`
  Encodes a message call into binary.
  `ByteBuffer`
  `encodeSuccessEnvelope(Object result)`
  Encodes a successful result into a binary envelope message.

- ## Method Details

  - ### encodeMethodCall

    @NonNull ByteBuffer encodeMethodCall(@NonNull MethodCall methodCall)
    Encodes a message call into binary.
    Parameters:
      `methodCall` - a `MethodCall`.
    Returns:
      a `ByteBuffer` containing the encoding between position 0 and the current position.

  - ### decodeMethodCall

    @NonNull MethodCall decodeMethodCall(@NonNull ByteBuffer methodCall)
    Decodes a message call from binary.
    Parameters:
      `methodCall` - the binary encoding of the method call as a `ByteBuffer`.
    Returns:
      a `MethodCall` representation of the bytes between the given buffer's current position and its limit.

  - ### encodeSuccessEnvelope

    @NonNull ByteBuffer encodeSuccessEnvelope(@Nullable Object result)
    Encodes a successful result into a binary envelope message.
    Parameters:
      `result` - The result value, possibly null.
    Returns:
      a `ByteBuffer` containing the encoding between position 0 and the current position.

  - ### encodeErrorEnvelope

    @NonNull ByteBuffer encodeErrorEnvelope(@NonNull String errorCode, @Nullable String errorMessage, @Nullable Object errorDetails)
    Encodes an error result into a binary envelope message.
    Parameters:
      `errorCode` - An error code String.
      `errorMessage` - An error message String, possibly null.
      `errorDetails` - Error details, possibly null. Consider supporting `Throwable` in your codec. This is the most common value passed to this field.
    Returns:
      a `ByteBuffer` containing the encoding between position 0 and the current position.

  - ### encodeErrorEnvelopeWithStacktrace

    @NonNull ByteBuffer encodeErrorEnvelopeWithStacktrace(@NonNull String errorCode, @Nullable String errorMessage, @Nullable Object errorDetails, @Nullable String errorStacktrace)
    Encodes an error result into a binary envelope message with the native stacktrace.
    Parameters:
      `errorCode` - An error code String.
      `errorMessage` - An error message String, possibly null.
      `errorDetails` - Error details, possibly null. Consider supporting `Throwable` in your codec. This is the most common value passed to this field.
      `errorStacktrace` - Platform stacktrace for the error. possibly null.
    Returns:
      a `ByteBuffer` containing the encoding between position 0 and the current position.

  - ### decodeEnvelope

    @NonNull Object decodeEnvelope(@NonNull ByteBuffer envelope)
    Decodes a result envelope from binary.
    Parameters:
      `envelope` - the binary encoding of a result envelope as a `ByteBuffer`.
    Returns:
      the enveloped result Object.
    Throws:
      `FlutterException` - if the envelope was an error envelope.