append method

Future<int> append(
  1. WalBinRecord builder(
    1. int lsn,
    2. int prevLsn
    )
)

Implementation

Future<int> append(WalBinRecord Function(int lsn, int prevLsn) builder) async {
  if (_closed) throw StateError('WAL is closed');
  _lsn++;
  final lsn     = _lsn;
  final prevLsn = _txnLastLsn[_currentTxnId] ?? 0;
  final record  = builder(lsn, prevLsn);
  _frameRecord(record.encode());
  await _flush();
  _flushedLsn = lsn;
  _txnLastLsn[record.txnId] = lsn;
  return lsn;
}