// (found in the LICENSE.Apache file in the root directory).
#pragma once
+#include "rocksdb/comparator.h"
#ifndef ROCKSDB_LITE
+#include <queue>
#include <string>
#include <vector>
-#include <queue>
-#include "db/dbformat.h"
#include "memory/arena.h"
#include "rocksdb/db.h"
#include "rocksdb/iterator.h"
class MinIterComparator {
public:
- explicit MinIterComparator(const Comparator* comparator) :
- comparator_(comparator) {}
+ explicit MinIterComparator(const CompareInterface* comparator)
+ : comparator_(comparator) {}
bool operator()(InternalIterator* a, InternalIterator* b) {
return comparator_->Compare(a->key(), b->key()) > 0;
}
+
private:
- const Comparator* comparator_;
+ const CompareInterface* comparator_;
};
-typedef std::priority_queue<InternalIterator*, std::vector<InternalIterator*>,
- MinIterComparator> MinIterHeap;
+using MinIterHeap =
+ std::priority_queue<InternalIterator*, std::vector<InternalIterator*>,
+ MinIterComparator>;
/**
* ForwardIterator is a special type of iterator that only supports Seek()
// either done immediately or deferred until this iterator is unpinned by
// PinnedIteratorsManager.
void SVCleanup();
- static void SVCleanup(
- DBImpl* db, SuperVersion* sv, bool background_purge_on_iterator_cleanup);
+ static void SVCleanup(DBImpl* db, SuperVersion* sv,
+ bool background_purge_on_iterator_cleanup);
static void DeferredSVCleanup(void* arg);
void RebuildIterators(bool refresh_sv);
void RenewIterators();
- void BuildLevelIterators(const VersionStorageInfo* vstorage);
+ void BuildLevelIterators(const VersionStorageInfo* vstorage,
+ SuperVersion* sv);
void ResetIncompleteIterators();
- void SeekInternal(const Slice& internal_key, bool seek_to_first);
+ void SeekInternal(const Slice& internal_key, bool seek_to_first,
+ bool seek_after_async_io);
+
void UpdateCurrent();
bool NeedToSeekImmutable(const Slice& internal_key);
void DeleteCurrentIter();
- uint32_t FindFileInRange(
- const std::vector<FileMetaData*>& files, const Slice& internal_key,
- uint32_t left, uint32_t right);
+ uint32_t FindFileInRange(const std::vector<FileMetaData*>& files,
+ const Slice& internal_key, uint32_t left,
+ uint32_t right);
bool IsOverUpperBound(const Slice& internal_key) const;