parsePush method

ParseResult<List?> parsePush(
  1. Uint8List buffer,
  2. int offset,
  3. ItemParser parseItem
)

Implementation

ParseResult<List<dynamic>?> parsePush(
  Uint8List buffer,
  int offset,
  ItemParser parseItem,
) {
  // La lógica de parsing es idéntica a parseArray
  final crlf = findCRLF(buffer, offset);
  if (crlf == -1) throw const _IncompleteDataException();
  final count = int.parse(decodeString(buffer, offset + 1, crlf));
  if (count == -1) return ParseResult(null, crlf - offset + 2); // Push Nulo

  final items = <dynamic>[];
  var currentOffset = crlf + 2;
  for (var i = 0; i < count; i++) {
    final result = parseItem(buffer, currentOffset);
    items.add(result.value);
    currentOffset += result.bytesConsumed;
  }
  return ParseResult(items, currentOffset - offset);
}