close method

Future<void> close()

Closes this database, shutting down all worker isolates and releasing native resources.

After close() resolves, any further operations on this Database throw a ResqliteConnectionException.

Implementation

Future<void> close() async {
  if (_closedCompleter case Completer<void> completer) {
    return completer.future;
  }

  final completer = _closedCompleter = Completer();

  try {
    final (writer, readerPool) = await (_writer, _readerPool).wait;

    _streamEngine.close();

    await readerPool.close();
    await writer.close();

    resqliteClose(_handle);

    completer.complete();
  } catch (e) {
    completer.completeError(e);
    rethrow;
  }
}