decodeBytes function

Map<String, Object> decodeBytes(
  1. List<int> buffer,
  2. int offset
)

Decode length-delimited bytes from buffer at offset.

Returns {data: List<int>, bytesRead: int}.

Implementation

Map<String, Object> decodeBytes(List<int> buffer, int offset) {
  var varintResult = decodeVarint(buffer, offset);
  var length = varintResult['value']!;
  var varintSize = varintResult['bytesRead']!;
  var start = offset + varintSize;
  if (start + length > buffer.length) {
    throw FormatException(
      'Length-delimited field overflows buffer at offset $offset: '
      'need $length bytes, have ${buffer.length - start}',
    );
  }
  var data = buffer.sublist(start, start + length);
  return {'data': data, 'bytesRead': varintSize + length};
}