put method

Future<void> put(
  1. int pageId,
  2. Uint8List data
)

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);
}