edit method
返回名为key的条目的编辑器,如果另一个条目为空,则返回null
Implementation
Future<Editor?> edit(String key, {int sequenceNumber = ANY_SEQUENCE_NUMBER}) async {
return await _runtimeLock.synchronized(
() async {
_checkCacheNotClosed();
_validateKey(key);
_Entry? entry = _lruEntries[key];
if ((entry == null || entry.sequenceNumber != sequenceNumber) && sequenceNumber != ANY_SEQUENCE_NUMBER) {
return null;
}
if (entry == null) {
entry = _Entry(key, cacheDirectory, valueCount);
_lruEntries[key] = entry;
} else if (entry.currentEditor != null) {
return null;
}
Editor editor = Editor(entry, valueCount);
entry.currentEditor = editor;
/// 在创建文件之前刷新日志,以防止文件泄漏
_journalFileWriter!.write("$DIRTY $key\n");
await _journalFileWriter!.flush();
return editor;
},
);
}