private Table ToTable(FileMetaData file) { var cacheKey = ToCacheKey(file); var table = _cache.Lookup <Table>(_cacheId, cacheKey); if (table == null) { var contentReader = _storge.GetTableContentById(file.Number); table = new Table(contentReader, _options.BlockCache, _internalKeyComparer, _options.SnappyDecompressor); _cache.Insert(_cacheId, cacheKey, table); } return(table); }
private void MaybeAddFile(Version version, int level, FileMetaData addedFile) { if (_levels[level].DeletedFiles.Contains(addedFile.Number)) { return; } var files = version._files[level]; if (level > 0) { // Must not overlap if (files.Count > 0) { Debug.Assert(_internalKeyComparer.Compare(files.Last().Largest, addedFile.Smallest) < 0); } } files.Add(addedFile); }
private byte[] ToCacheKey(FileMetaData file) { return(BitConverter.GetBytes(file.Number)); }