summaryrefslogtreecommitdiffstats
path: root/src/rocksdb/db/version_builder.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/rocksdb/db/version_builder.h')
-rw-r--r--src/rocksdb/db/version_builder.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/rocksdb/db/version_builder.h b/src/rocksdb/db/version_builder.h
new file mode 100644
index 000000000..87415ed55
--- /dev/null
+++ b/src/rocksdb/db/version_builder.h
@@ -0,0 +1,48 @@
+// Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
+// This source code is licensed under both the GPLv2 (found in the
+// COPYING file in the root directory) and Apache 2.0 License
+// (found in the LICENSE.Apache file in the root directory).
+//
+// Copyright (c) 2011 The LevelDB Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file. See the AUTHORS file for names of contributors.
+//
+#pragma once
+#include "rocksdb/file_system.h"
+#include "rocksdb/slice_transform.h"
+
+namespace ROCKSDB_NAMESPACE {
+
+class TableCache;
+class VersionStorageInfo;
+class VersionEdit;
+struct FileMetaData;
+class InternalStats;
+
+// A helper class so we can efficiently apply a whole sequence
+// of edits to a particular state without creating intermediate
+// Versions that contain full copies of the intermediate state.
+class VersionBuilder {
+ public:
+ VersionBuilder(const FileOptions& file_options, TableCache* table_cache,
+ VersionStorageInfo* base_vstorage, Logger* info_log = nullptr);
+ ~VersionBuilder();
+ Status CheckConsistency(VersionStorageInfo* vstorage);
+ Status CheckConsistencyForDeletes(VersionEdit* edit, uint64_t number,
+ int level);
+ bool CheckConsistencyForNumLevels();
+ Status Apply(VersionEdit* edit);
+ Status SaveTo(VersionStorageInfo* vstorage);
+ Status LoadTableHandlers(InternalStats* internal_stats, int max_threads,
+ bool prefetch_index_and_filter_in_cache,
+ bool is_initial_load,
+ const SliceTransform* prefix_extractor);
+ void MaybeAddFile(VersionStorageInfo* vstorage, int level, FileMetaData* f);
+
+ private:
+ class Rep;
+ Rep* rep_;
+};
+
+extern bool NewestFirstBySeqNo(FileMetaData* a, FileMetaData* b);
+} // namespace ROCKSDB_NAMESPACE