getSync method

Uint8List? getSync(
  1. String key
)

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