insert method

void insert(
  1. int offset,
  2. Uint8List data
)

Insert a received stream chunk. Safe to call multiple times with retransmissions.

Implementation

void insert(int offset, Uint8List data) {
  // Discard data we've already consumed
  if (offset + data.length <= readOffset) {
    return;
  }

  // Trim front if partially consumed
  if (offset < readOffset) {
    final trim = readOffset - offset;
    data = data.sublist(trim);
    offset = readOffset;
  }

  // Ignore duplicate chunk
  if (_chunks.containsKey(offset)) {
    return;
  }

  _chunks[offset] = data;
}