getSync method
Zero-copy read: snapshot → RAM buffer → disk fallback.
Implementation
Uint8List? getSync(String key) {
final entry = _index[key];
if (entry == null) return null;
// Fast path 1: data within cold-start snapshot (zero-copy)
if (_readBuf != null && entry.offset + entry.length <= _readBufLen) {
return Uint8List.sublistView(
_readBuf!,
entry.offset,
entry.offset + entry.length,
);
}
// Fast path 2: data in pending RAM buffer
if (_pendingBuf.length > 0 && entry.offset >= _pendingStart) {
final buf = _pendingBuf.toBytes();
final relOffset = entry.offset - _pendingStart;
if (relOffset + entry.length <= buf.length) {
return Uint8List.sublistView(buf, relOffset, relOffset + entry.length);
}
}
// Slow path: already flushed to disk
final raf = _file.openSync(mode: FileMode.read);
raf.setPositionSync(entry.offset);
final data = raf.readSync(entry.length);
raf.closeSync();
return data;
}