decode static method

Implementation

static List<ProtocolBufferDecoderResult> decode(List<int> bytes) {
  final List<ProtocolBufferDecoderResult> results = [];
  int index = 0;
  while (index < bytes.length) {
    final decodeTag = _decodeVarint(bytes.sublist(index));

    index += decodeTag.consumed;
    final int tag = decodeTag.value;
    final int fieldId = tag >> 3;
    final int wireType = tag & 0x07;
    switch (wireType) {
      case 2:
        final decodeLength = _decodeVarint(bytes.sublist(index));
        index += decodeLength.consumed;
        results.add(ProtocolBufferDecoderResult(
            tagNumber: fieldId,
            value: bytes.sublist(index, index + decodeLength.value)));
        index += decodeLength.value;
        break;

      case 0:
        final decodeInt = _decodeInt(bytes.sublist(index));
        index += decodeInt.consumed;
        final result = ProtocolBufferDecoderResult(
            tagNumber: fieldId, value: decodeInt.value);
        results.add(result);
        break;
      default:
        throw TronPluginException(
            "protobuf wiretype not supported. filedId :$fieldId $wireType $tag");
    }
  }

  return results;
}