readArrayImpl static method

List readArrayImpl(
  1. Uint8List buffer,
  2. ISerializable FactoryClass,
  3. dynamic accessor,
  4. bool shouldContinue(
    1. int,
    2. Uint8List
    ),
)

Implementation

static List readArrayImpl(Uint8List buffer, ISerializable FactoryClass, dynamic accessor, bool Function(int, Uint8List) shouldContinue) {
  final elements = <ISerializable>[];
  var previousElement;
  var i = 0;

  while (shouldContinue(i, buffer)) {
    final element = FactoryClass.deserialize(buffer);
    if (0 >= element.size) throw RangeError('element size has invalid size');
    if (accessor != null && previousElement != null && 0 <= deepCompare(accessor(previousElement), accessor(element))) {
      throw RangeError('elements in array are not sorted');
    }
    buffer = buffer.sublist(element.size);
    elements.add(element);
    previousElement = element;
    ++i;
  }

  return elements;
}