apply method
Apply a set of pending changes as a new delta version.
Implementation
void apply(final Map<BytesKey, Uint8List?> pending) {
_guardReadonly();
final version = _store.current + 1;
final timestamp = DateTime.now().millisecondsSinceEpoch;
// Serialize delta
final needed = DeltaBlock.required(pending);
final pointer = _dbm.pool.allocate(needed);
final delta = DeltaBlock.encode(version, timestamp, pending, pointer);
delta.block.write(_dbm.file);
// Append to version list
_store.append(VersionEntry(version, timestamp, pointer));
// Write version list — flush header before freeing old block
final old = _dbm.header.list;
final listPtr = _store.write(old);
_dbm.header.list = listPtr;
_dbm.header.counter = version;
_flush();
if (old.isNotEmpty && old != listPtr) {
_dbm.pool.free(old);
}
}