public IEnumerable<SortedBlockTable> GetTables() {
var enumerators = new List<IEnumerable<KeyValuePair<Key, Value>>>();
// Capture copy of the rotated table if there is one
var rotatedMemTable = _rotatedJournaledMemTable;
// Select main MemTable
enumerators.Add(_currentJournaledMemTable.EnumerateSnapshotFromKey(Key.Empty));
if (rotatedMemTable != null)
enumerators.Add(rotatedMemTable.EnumerateSnapshotFromKey(Key.Empty));
// Now check the files on disk
using (var manifestSnapshot = _manifest.GetLatestManifest()) {
List<SortedBlockTable> tables = new List<SortedBlockTable>();
for (int i = 0; i < manifestSnapshot.NumLevels; i++) {
tables.AddRange(manifestSnapshot.GetPagesAtLevel(i).OrderByDescending(page => page.Version)
.Select(page => new SortedBlockTable(_cache, _manifest.BaseFileName, page.Level, page.Version)));
}
return tables;
}
}