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 and 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

          ByteBuffer encodeMethodCall(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

          MethodCall decodeMethodCall(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

          ByteBuffer encodeSuccessEnvelope(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

          ByteBuffer encodeErrorEnvelope(String errorCode,
                                         String errorMessage,
                                         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

          ByteBuffer encodeErrorEnvelopeWithStacktrace(String errorCode,
                                                       String errorMessage,
                                                       Object errorDetails,
                                                       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

          Object decodeEnvelope(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.