Feathercoin  0.5.0
P2P Digital Currency
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros
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) {
66  FileMetaData f;
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_;
101  DeletedFileSet deleted_files_;
102  std::vector< std::pair<int, FileMetaData> > new_files_;
103 };
104 
105 } // namespace leveldb
106 
107 #endif // STORAGE_LEVELDB_DB_VERSION_EDIT_H_
void SetCompactPointer(int level, const InternalKey &key)
Definition: version_edit.h:55
void SetPrevLogNumber(uint64_t num)
Definition: version_edit.h:43
void SetLogNumber(uint64_t num)
Definition: version_edit.h:39
uint64_t prev_log_number_
Definition: version_edit.h:91
std::vector< std::pair< int, InternalKey > > compact_pointers_
Definition: version_edit.h:100
void AddFile(int level, uint64_t file, uint64_t file_size, const InternalKey &smallest, const InternalKey &largest)
Definition: version_edit.h:62
DeletedFileSet deleted_files_
Definition: version_edit.h:101
SequenceNumber last_sequence_
Definition: version_edit.h:93
std::vector< std::pair< int, FileMetaData > > new_files_
Definition: version_edit.h:102
InternalKey smallest
Definition: version_edit.h:22
void SetComparatorName(const Slice &name)
Definition: version_edit.h:35
uint64_t SequenceNumber
Definition: dbformat.h:63
unsigned long long uint64_t
Definition: stdint.h:22
std::set< std::pair< int, uint64_t > > DeletedFileSet
Definition: version_edit.h:87
void SetLastSequence(SequenceNumber seq)
Definition: version_edit.h:51
Status DecodeFrom(const Slice &src)
void DeleteFile(int level, uint64_t file)
Definition: version_edit.h:75
std::string comparator_
Definition: version_edit.h:89
void EncodeTo(std::string *dst) const
Definition: version_edit.cc:41
void SetNextFile(uint64_t num)
Definition: version_edit.h:47
uint64_t next_file_number_
Definition: version_edit.h:92
std::string DebugString() const
std::string ToString() const
Definition: slice.h:66
const char * name
Definition: testharness.cc:18