put method
Implementation
Future<void> put(int pageId, Uint8List data) async {
// Extract LSN from page header (offset 8, 8 bytes, little-endian uint64)
int lsn = 0;
if (data.length >= 16) {
lsn = ByteData.sublistView(data).getUint64(8, Endian.little);
}
if (_map.containsKey(pageId)) {
final wasClean = !_map[pageId]!.dirty;
_map[pageId]!.data = Uint8List.fromList(data);
_map[pageId]!.lsn = lsn;
if (wasClean) {
_map[pageId]!.dirty = true;
_dirtyCount++;
}
_touch(pageId);
return;
}
await _admit(pageId, data, dirty: true, lsn: lsn);
}