insert method
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;
}