Bitcoin
version_edit.h
Go to the documentation of this file.
1 // Copyright (c) 2011 The LevelDB Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. See the AUTHORS file for names of contributors.
4 
5 #ifndef STORAGE_LEVELDB_DB_VERSION_EDIT_H_
6 #define STORAGE_LEVELDB_DB_VERSION_EDIT_H_
7 
8 #include <set>
9 #include <utility>
10 #include <vector>
11 #include "db/dbformat.h"
12 
13 namespace leveldb {
14 
15 class VersionSet;
16 
17 struct FileMetaData {
18  int refs;
19  int allowed_seeks; // Seeks allowed until compaction
21  uint64_t file_size; // File size in bytes
22  InternalKey smallest; // Smallest internal key served by table
23  InternalKey largest; // Largest internal key served by table
24 
25  FileMetaData() : refs(0), allowed_seeks(1 << 30), file_size(0) { }
26 };
27 
28 class VersionEdit {
29  public:
30  VersionEdit() { Clear(); }
32 
33  void Clear();
34 
35  void SetComparatorName(const Slice& name) {
36  has_comparator_ = true;
37  comparator_ = name.ToString();
38  }
39  void SetLogNumber(uint64_t num) {
40  has_log_number_ = true;
41  log_number_ = num;
42  }
44  has_prev_log_number_ = true;
45  prev_log_number_ = num;
46  }
47  void SetNextFile(uint64_t num) {
48  has_next_file_number_ = true;
49  next_file_number_ = num;
50  }
52  has_last_sequence_ = true;
53  last_sequence_ = seq;
54  }
55  void SetCompactPointer(int level, const InternalKey& key) {
56  compact_pointers_.push_back(std::make_pair(level, key));
57  }
58 
59  // Add the specified file at the specified number.
60  // REQUIRES: This version has not been saved (see VersionSet::SaveTo)
61  // REQUIRES: "smallest" and "largest" are smallest and largest keys in file
62  void AddFile(int level, uint64_t file,
63  uint64_t file_size,
64  const InternalKey& smallest,
65  const InternalKey& largest) {
67  f.number = file;
68  f.file_size = file_size;
69  f.smallest = smallest;
70  f.largest = largest;
71  new_files_.push_back(std::make_pair(level, f));
72  }
73 
74  // Delete the specified "file" from the specified "level".
75  void DeleteFile(int level, uint64_t file) {
76  deleted_files_.insert(std::make_pair(level, file));
77  }
78 
79  void EncodeTo(std::string* dst) const;
80  Status DecodeFrom(const Slice& src);
81 
82  std::string DebugString() const;
83 
84  private:
85  friend class VersionSet;
86 
87  typedef std::set< std::pair<int, uint64_t> > DeletedFileSet;
88 
89  std::string comparator_;
99 
100  std::vector< std::pair<int, InternalKey> > compact_pointers_;
102  std::vector< std::pair<int, FileMetaData> > new_files_;
103 };
104 
105 } // namespace leveldb
106 
107 #endif // STORAGE_LEVELDB_DB_VERSION_EDIT_H_
Definition: version_set.h:165
uint64_t file_size
Definition: version_edit.h:21
int refs
Definition: version_edit.h:18
Definition: autocompact_test.cc:11
int allowed_seeks
Definition: version_edit.h:19
void SetPrevLogNumber(uint64_t num)
Definition: version_edit.h:43
bool has_log_number_
Definition: version_edit.h:95
void SetLastSequence(SequenceNumber seq)
Definition: version_edit.h:51
void SetLogNumber(uint64_t num)
Definition: version_edit.h:39
DeletedFileSet deleted_files_
Definition: version_edit.h:101
void SetComparatorName(const Slice &name)
Definition: version_edit.h:35
InternalKey smallest
Definition: version_edit.h:22
void DeleteFile(int level, uint64_t file)
Definition: version_edit.h:75
std::string DebugString() const
Definition: version_edit.cc:212
void SetNextFile(uint64_t num)
Definition: version_edit.h:47
void SetCompactPointer(int level, const InternalKey &key)
Definition: version_edit.h:55
uint64_t number
Definition: version_edit.h:20
std::string comparator_
Definition: version_edit.h:89
std::set< std::pair< int, uint64_t > > DeletedFileSet
Definition: version_edit.h:87
InternalKey largest
Definition: version_edit.h:23
uint64_t SequenceNumber
Definition: dbformat.h:63
bool has_last_sequence_
Definition: version_edit.h:98
f
Definition: linearize-data.py:263
const char * name
Definition: rest.cpp:39
uint64_t next_file_number_
Definition: version_edit.h:92
unsigned long long uint64_t
Definition: stdint.h:22
bool has_next_file_number_
Definition: version_edit.h:97
~VersionEdit()
Definition: version_edit.h:31
uint64_t prev_log_number_
Definition: version_edit.h:91
void EncodeTo(std::string *dst) const
Definition: version_edit.cc:41
bool has_prev_log_number_
Definition: version_edit.h:96
VersionEdit()
Definition: version_edit.h:30
Definition: slice.h:25
file
Definition: linearize-hashes.py:138
FileMetaData()
Definition: version_edit.h:25
SequenceNumber last_sequence_
Definition: version_edit.h:93
void Clear()
Definition: version_edit.cc:26
Status DecodeFrom(const Slice &src)
Definition: version_edit.cc:109
std::vector< std::pair< int, InternalKey > > compact_pointers_
Definition: version_edit.h:100
std::vector< std::pair< int, FileMetaData > > new_files_
Definition: version_edit.h:102
Definition: version_edit.h:28
Definition: status.h:21
Definition: version_edit.h:17
void AddFile(int level, uint64_t file, uint64_t file_size, const InternalKey &smallest, const InternalKey &largest)
Definition: version_edit.h:62
Definition: dbformat.h:144
bool has_comparator_
Definition: version_edit.h:94
uint64_t log_number_
Definition: version_edit.h:90
key
Definition: extract_strings_qt.py:80