closeSync method

void closeSync()

Flushes pending writes and releases the directory lock.

After this call the engine refuses reads as well as writes: a mapped segment must not be used after it is unmapped.

Implementation

void closeSync() {
  if (_closed) return;
  _closed = true;
  try {
    if (!readOnly) _walFile.flushSync();
  } finally {
    try {
      _walFile.closeSync();
    } finally {
      for (final mapped in _segmentMaps) {
        try {
          mapped.closeSync();
        } on Object {
          // Keep unmapping the rest; the directory lock must be released.
        }
      }
      _segmentMaps.clear();
      _segments.clear();
      _directory.closeSync();
    }
  }
}