24 const ReadOptions& options);
28 virtual void Seek(
const Slice& target);
29 virtual void SeekToFirst();
30 virtual void SeekToLast();
35 return data_iter_.Valid();
39 return data_iter_.key();
43 return data_iter_.value();
47 if (!index_iter_.status().ok()) {
48 return index_iter_.status();
49 }
else if (data_iter_.iter() != NULL && !data_iter_.status().ok()) {
50 return data_iter_.status();
58 if (status_.ok() && !s.
ok()) status_ = s;
60 void SkipEmptyDataBlocksForward();
61 void SkipEmptyDataBlocksBackward();
62 void SetDataIterator(
Iterator* data_iter);
76 TwoLevelIterator::TwoLevelIterator(
80 const ReadOptions& options)
81 : block_function_(block_function),
84 index_iter_(index_iter),
void SetDataIterator(Iterator *data_iter)
std::string data_block_handle_
virtual void SeekToFirst()
const ReadOptions options_
TwoLevelIterator(Iterator *index_iter, BlockFunction block_function, void *arg, const ReadOptions &options)
void SaveError(const Status &s)
void Seek(const Slice &k)
virtual Slice value() const
void SkipEmptyDataBlocksForward()
int compare(const Slice &b) const
virtual void Seek(const Slice &target)
virtual Status status() const
IteratorWrapper index_iter_
Iterator *(* BlockFunction)(void *, const ReadOptions &, const Slice &)
void SkipEmptyDataBlocksBackward()
virtual bool Valid() const
virtual Slice key() const
Iterator * NewTwoLevelIterator(Iterator *index_iter, BlockFunction block_function, void *arg, const ReadOptions &options)
virtual void SeekToLast()
IteratorWrapper data_iter_
const char * data() const
BlockFunction block_function_
virtual ~TwoLevelIterator()