leveldb
Public Member Functions | Private Types | Private Attributes | Friends | List of all members
leveldb::VersionEdit Class Reference

#include <version_edit.h>

Public Member Functions

 VersionEdit ()
 
 ~VersionEdit ()
 
void Clear ()
 
void SetComparatorName (const Slice &name)
 
void SetLogNumber (uint64_t num)
 
void SetPrevLogNumber (uint64_t num)
 
void SetNextFile (uint64_t num)
 
void SetLastSequence (SequenceNumber seq)
 
void SetCompactPointer (int level, const InternalKey &key)
 
void AddFile (int level, uint64_t file, uint64_t file_size, const InternalKey &smallest, const InternalKey &largest)
 
void DeleteFile (int level, uint64_t file)
 
void EncodeTo (std::string *dst) const
 
Status DecodeFrom (const Slice &src)
 
std::string DebugString () const
 

Private Types

typedef std::set< std::pair< int, uint64_t > > DeletedFileSet
 

Private Attributes

std::string comparator_
 
uint64_t log_number_
 
uint64_t prev_log_number_
 
uint64_t next_file_number_
 
SequenceNumber last_sequence_
 
bool has_comparator_
 
bool has_log_number_
 
bool has_prev_log_number_
 
bool has_next_file_number_
 
bool has_last_sequence_
 
std::vector< std::pair< int, InternalKey > > compact_pointers_
 
DeletedFileSet deleted_files_
 
std::vector< std::pair< int, FileMetaData > > new_files_
 

Friends

class VersionSet
 

Detailed Description

Definition at line 28 of file version_edit.h.

Member Typedef Documentation

§ DeletedFileSet

typedef std::set< std::pair<int, uint64_t> > leveldb::VersionEdit::DeletedFileSet
private

Definition at line 87 of file version_edit.h.

Constructor & Destructor Documentation

§ VersionEdit()

leveldb::VersionEdit::VersionEdit ( )
inline

Definition at line 30 of file version_edit.h.

30 { Clear(); }

§ ~VersionEdit()

leveldb::VersionEdit::~VersionEdit ( )
inline

Definition at line 31 of file version_edit.h.

31 { }

Member Function Documentation

§ AddFile()

void leveldb::VersionEdit::AddFile ( int  level,
uint64_t  file,
uint64_t  file_size,
const InternalKey smallest,
const InternalKey largest 
)
inline

Definition at line 62 of file version_edit.h.

65  {
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  }
std::vector< std::pair< int, FileMetaData > > new_files_
Definition: version_edit.h:102
Here is the caller graph for this function:

§ Clear()

void leveldb::VersionEdit::Clear ( )

Definition at line 26 of file version_edit.cc.

26  {
27  comparator_.clear();
28  log_number_ = 0;
29  prev_log_number_ = 0;
30  last_sequence_ = 0;
32  has_comparator_ = false;
33  has_log_number_ = false;
34  has_prev_log_number_ = false;
35  has_next_file_number_ = false;
36  has_last_sequence_ = false;
37  deleted_files_.clear();
38  new_files_.clear();
39 }
DeletedFileSet deleted_files_
Definition: version_edit.h:101
std::string comparator_
Definition: version_edit.h:89
uint64_t next_file_number_
Definition: version_edit.h:92
uint64_t prev_log_number_
Definition: version_edit.h:91
SequenceNumber last_sequence_
Definition: version_edit.h:93
std::vector< std::pair< int, FileMetaData > > new_files_
Definition: version_edit.h:102
Here is the caller graph for this function:

§ DebugString()

std::string leveldb::VersionEdit::DebugString ( ) const

Definition at line 212 of file version_edit.cc.

212  {
213  std::string r;
214  r.append("VersionEdit {");
215  if (has_comparator_) {
216  r.append("\n Comparator: ");
217  r.append(comparator_);
218  }
219  if (has_log_number_) {
220  r.append("\n LogNumber: ");
222  }
223  if (has_prev_log_number_) {
224  r.append("\n PrevLogNumber: ");
226  }
227  if (has_next_file_number_) {
228  r.append("\n NextFile: ");
230  }
231  if (has_last_sequence_) {
232  r.append("\n LastSeq: ");
234  }
235  for (size_t i = 0; i < compact_pointers_.size(); i++) {
236  r.append("\n CompactPointer: ");
237  AppendNumberTo(&r, compact_pointers_[i].first);
238  r.append(" ");
239  r.append(compact_pointers_[i].second.DebugString());
240  }
241  for (DeletedFileSet::const_iterator iter = deleted_files_.begin();
242  iter != deleted_files_.end();
243  ++iter) {
244  r.append("\n DeleteFile: ");
245  AppendNumberTo(&r, iter->first);
246  r.append(" ");
247  AppendNumberTo(&r, iter->second);
248  }
249  for (size_t i = 0; i < new_files_.size(); i++) {
250  const FileMetaData& f = new_files_[i].second;
251  r.append("\n AddFile: ");
252  AppendNumberTo(&r, new_files_[i].first);
253  r.append(" ");
254  AppendNumberTo(&r, f.number);
255  r.append(" ");
256  AppendNumberTo(&r, f.file_size);
257  r.append(" ");
258  r.append(f.smallest.DebugString());
259  r.append(" .. ");
260  r.append(f.largest.DebugString());
261  }
262  r.append("\n}\n");
263  return r;
264 }
DeletedFileSet deleted_files_
Definition: version_edit.h:101
std::string comparator_
Definition: version_edit.h:89
uint64_t next_file_number_
Definition: version_edit.h:92
uint64_t prev_log_number_
Definition: version_edit.h:91
SequenceNumber last_sequence_
Definition: version_edit.h:93
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
void AppendNumberTo(std::string *str, uint64_t num)
Definition: logging.cc:16
Here is the call graph for this function:
Here is the caller graph for this function:

§ DecodeFrom()

Status leveldb::VersionEdit::DecodeFrom ( const Slice src)

Definition at line 109 of file version_edit.cc.

109  {
110  Clear();
111  Slice input = src;
112  const char* msg = NULL;
113  uint32_t tag;
114 
115  // Temporary storage for parsing
116  int level;
117  uint64_t number;
118  FileMetaData f;
119  Slice str;
120  InternalKey key;
121 
122  while (msg == NULL && GetVarint32(&input, &tag)) {
123  switch (tag) {
124  case kComparator:
125  if (GetLengthPrefixedSlice(&input, &str)) {
126  comparator_ = str.ToString();
127  has_comparator_ = true;
128  } else {
129  msg = "comparator name";
130  }
131  break;
132 
133  case kLogNumber:
134  if (GetVarint64(&input, &log_number_)) {
135  has_log_number_ = true;
136  } else {
137  msg = "log number";
138  }
139  break;
140 
141  case kPrevLogNumber:
142  if (GetVarint64(&input, &prev_log_number_)) {
143  has_prev_log_number_ = true;
144  } else {
145  msg = "previous log number";
146  }
147  break;
148 
149  case kNextFileNumber:
150  if (GetVarint64(&input, &next_file_number_)) {
151  has_next_file_number_ = true;
152  } else {
153  msg = "next file number";
154  }
155  break;
156 
157  case kLastSequence:
158  if (GetVarint64(&input, &last_sequence_)) {
159  has_last_sequence_ = true;
160  } else {
161  msg = "last sequence number";
162  }
163  break;
164 
165  case kCompactPointer:
166  if (GetLevel(&input, &level) &&
167  GetInternalKey(&input, &key)) {
168  compact_pointers_.push_back(std::make_pair(level, key));
169  } else {
170  msg = "compaction pointer";
171  }
172  break;
173 
174  case kDeletedFile:
175  if (GetLevel(&input, &level) &&
176  GetVarint64(&input, &number)) {
177  deleted_files_.insert(std::make_pair(level, number));
178  } else {
179  msg = "deleted file";
180  }
181  break;
182 
183  case kNewFile:
184  if (GetLevel(&input, &level) &&
185  GetVarint64(&input, &f.number) &&
186  GetVarint64(&input, &f.file_size) &&
187  GetInternalKey(&input, &f.smallest) &&
188  GetInternalKey(&input, &f.largest)) {
189  new_files_.push_back(std::make_pair(level, f));
190  } else {
191  msg = "new-file entry";
192  }
193  break;
194 
195  default:
196  msg = "unknown tag";
197  break;
198  }
199  }
200 
201  if (msg == NULL && !input.empty()) {
202  msg = "invalid tag";
203  }
204 
205  Status result;
206  if (msg != NULL) {
207  result = Status::Corruption("VersionEdit", msg);
208  }
209  return result;
210 }
static bool GetLevel(Slice *input, int *level)
Definition: version_edit.cc:98
DeletedFileSet deleted_files_
Definition: version_edit.h:101
static Slice GetLengthPrefixedSlice(const char *data)
Definition: memtable.cc:14
std::string comparator_
Definition: version_edit.h:89
static Status Corruption(const Slice &msg, const Slice &msg2=Slice())
Definition: status.h:38
uint64_t next_file_number_
Definition: version_edit.h:92
uint64_t prev_log_number_
Definition: version_edit.h:91
SequenceNumber last_sequence_
Definition: version_edit.h:93
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
bool GetVarint64(Slice *input, uint64_t *value)
Definition: coding.cc:160
bool GetVarint32(Slice *input, uint32_t *value)
Definition: coding.cc:131
static bool GetInternalKey(Slice *input, InternalKey *dst)
Definition: version_edit.cc:88
Here is the call graph for this function:
Here is the caller graph for this function:

§ DeleteFile()

void leveldb::VersionEdit::DeleteFile ( int  level,
uint64_t  file 
)
inline

Definition at line 75 of file version_edit.h.

75  {
76  deleted_files_.insert(std::make_pair(level, file));
77  }
DeletedFileSet deleted_files_
Definition: version_edit.h:101
Here is the caller graph for this function:

§ EncodeTo()

void leveldb::VersionEdit::EncodeTo ( std::string *  dst) const

Definition at line 41 of file version_edit.cc.

41  {
42  if (has_comparator_) {
45  }
46  if (has_log_number_) {
47  PutVarint32(dst, kLogNumber);
49  }
53  }
57  }
58  if (has_last_sequence_) {
61  }
62 
63  for (size_t i = 0; i < compact_pointers_.size(); i++) {
65  PutVarint32(dst, compact_pointers_[i].first); // level
66  PutLengthPrefixedSlice(dst, compact_pointers_[i].second.Encode());
67  }
68 
69  for (DeletedFileSet::const_iterator iter = deleted_files_.begin();
70  iter != deleted_files_.end();
71  ++iter) {
73  PutVarint32(dst, iter->first); // level
74  PutVarint64(dst, iter->second); // file number
75  }
76 
77  for (size_t i = 0; i < new_files_.size(); i++) {
78  const FileMetaData& f = new_files_[i].second;
79  PutVarint32(dst, kNewFile);
80  PutVarint32(dst, new_files_[i].first); // level
81  PutVarint64(dst, f.number);
82  PutVarint64(dst, f.file_size);
83  PutLengthPrefixedSlice(dst, f.smallest.Encode());
84  PutLengthPrefixedSlice(dst, f.largest.Encode());
85  }
86 }
DeletedFileSet deleted_files_
Definition: version_edit.h:101
void PutVarint64(std::string *dst, uint64_t v)
Definition: coding.cc:92
std::string comparator_
Definition: version_edit.h:89
uint64_t next_file_number_
Definition: version_edit.h:92
void PutLengthPrefixedSlice(std::string *dst, const Slice &value)
Definition: coding.cc:98
uint64_t prev_log_number_
Definition: version_edit.h:91
SequenceNumber last_sequence_
Definition: version_edit.h:93
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
void PutVarint32(std::string *dst, uint32_t v)
Definition: coding.cc:75
Here is the call graph for this function:
Here is the caller graph for this function:

§ SetCompactPointer()

void leveldb::VersionEdit::SetCompactPointer ( int  level,
const InternalKey key 
)
inline

Definition at line 55 of file version_edit.h.

55  {
56  compact_pointers_.push_back(std::make_pair(level, key));
57  }
std::vector< std::pair< int, InternalKey > > compact_pointers_
Definition: version_edit.h:100
Here is the caller graph for this function:

§ SetComparatorName()

void leveldb::VersionEdit::SetComparatorName ( const Slice name)
inline

Definition at line 35 of file version_edit.h.

35  {
36  has_comparator_ = true;
37  comparator_ = name.ToString();
38  }
std::string comparator_
Definition: version_edit.h:89
Here is the call graph for this function:
Here is the caller graph for this function:

§ SetLastSequence()

void leveldb::VersionEdit::SetLastSequence ( SequenceNumber  seq)
inline

Definition at line 51 of file version_edit.h.

51  {
52  has_last_sequence_ = true;
53  last_sequence_ = seq;
54  }
SequenceNumber last_sequence_
Definition: version_edit.h:93
Here is the caller graph for this function:

§ SetLogNumber()

void leveldb::VersionEdit::SetLogNumber ( uint64_t  num)
inline

Definition at line 39 of file version_edit.h.

39  {
40  has_log_number_ = true;
41  log_number_ = num;
42  }
Here is the caller graph for this function:

§ SetNextFile()

void leveldb::VersionEdit::SetNextFile ( uint64_t  num)
inline

Definition at line 47 of file version_edit.h.

47  {
48  has_next_file_number_ = true;
49  next_file_number_ = num;
50  }
uint64_t next_file_number_
Definition: version_edit.h:92
Here is the caller graph for this function:

§ SetPrevLogNumber()

void leveldb::VersionEdit::SetPrevLogNumber ( uint64_t  num)
inline

Definition at line 43 of file version_edit.h.

43  {
44  has_prev_log_number_ = true;
45  prev_log_number_ = num;
46  }
uint64_t prev_log_number_
Definition: version_edit.h:91
Here is the caller graph for this function:

Friends And Related Function Documentation

§ VersionSet

friend class VersionSet
friend

Definition at line 85 of file version_edit.h.

Member Data Documentation

§ compact_pointers_

std::vector< std::pair<int, InternalKey> > leveldb::VersionEdit::compact_pointers_
private

Definition at line 100 of file version_edit.h.

§ comparator_

std::string leveldb::VersionEdit::comparator_
private

Definition at line 89 of file version_edit.h.

§ deleted_files_

DeletedFileSet leveldb::VersionEdit::deleted_files_
private

Definition at line 101 of file version_edit.h.

§ has_comparator_

bool leveldb::VersionEdit::has_comparator_
private

Definition at line 94 of file version_edit.h.

§ has_last_sequence_

bool leveldb::VersionEdit::has_last_sequence_
private

Definition at line 98 of file version_edit.h.

§ has_log_number_

bool leveldb::VersionEdit::has_log_number_
private

Definition at line 95 of file version_edit.h.

§ has_next_file_number_

bool leveldb::VersionEdit::has_next_file_number_
private

Definition at line 97 of file version_edit.h.

§ has_prev_log_number_

bool leveldb::VersionEdit::has_prev_log_number_
private

Definition at line 96 of file version_edit.h.

§ last_sequence_

SequenceNumber leveldb::VersionEdit::last_sequence_
private

Definition at line 93 of file version_edit.h.

§ log_number_

uint64_t leveldb::VersionEdit::log_number_
private

Definition at line 90 of file version_edit.h.

§ new_files_

std::vector< std::pair<int, FileMetaData> > leveldb::VersionEdit::new_files_
private

Definition at line 102 of file version_edit.h.

§ next_file_number_

uint64_t leveldb::VersionEdit::next_file_number_
private

Definition at line 92 of file version_edit.h.

§ prev_log_number_

uint64_t leveldb::VersionEdit::prev_log_number_
private

Definition at line 91 of file version_edit.h.


The documentation for this class was generated from the following files: