writeEntries method
Converts entries to stored form, saves them (onWriteEntries) and sends LogEntriesAdded to changes; changes the store reported while saving (reportChange) follow it. Throws StateError after close.
Implementation
@override
@nonVirtual
Future<List<StoredLogEntry>> writeEntries(List<LogEntry> entries) async {
_checkOpen();
final detached = [for (final entry in entries) entry.withoutLiveObjects()];
_writesInProgress++;
_changesDuringWrite ??= [];
try {
final stored = await onWriteEntries(detached);
assert(
stored.length == detached.length,
'$name.onWriteEntries returned ${stored.length} entries for ${detached.length} written',
);
_emit(LogEntriesAdded(stored));
return stored;
} finally {
// Also after a failed write: otherwise deferred changes would wait for the next write.
_writesInProgress--;
if (_writesInProgress == 0) {
final deferred = _changesDuringWrite!;
_changesDuringWrite = null;
deferred.forEach(_emit);
}
}
}