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

    All Methods Instance Methods Abstract Methods
    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 Detail

    - #### 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.