| 23 | } |
| 24 | |
| 25 | std::shared_ptr<hfile::DataBlock> OnDiskSSTableReader::LoadDataBlock(int block_id) { |
| 26 | std::shared_ptr<hfile::DataBlock> block; |
| 27 | if (!block_cache_->Get(block_id, &block)) { |
| 28 | // not in cache, |
| 29 | hfile::DataBlock *new_block = new hfile::DataBlock(impl_->file_trailer_->compress_type()); |
| 30 | if (!impl_->LoadDataBlock(block_id, new_block)) { |
| 31 | delete new_block; |
| 32 | LOG(ERROR)<< "fail to load data block!"; |
| 33 | return std::shared_ptr<hfile::DataBlock>(); |
| 34 | } |
| 35 | block.reset(new_block); |
| 36 | block_cache_->Put(block_id, block); |
| 37 | } |
| 38 | return block; |
| 39 | } |
| 40 | |
| 41 | SSTableReader::Iterator *OnDiskSSTableReader::Seek(const std::string &key) { |
| 42 | return new OnDiskIterator(this, key); |