MCPcopy Create free account
hub / github.com/ElementsProject/elements / ParseFileName

Function ParseFileName

src/leveldb/db/filename.cc:78–121  ·  view source on GitHub ↗

Owned filenames have the form: dbname/CURRENT dbname/LOCK dbname/LOG dbname/LOG.old dbname/MANIFEST-[0-9]+ dbname/[0-9]+.(log|sst|ldb)

Source from the content-addressed store, hash-verified

76// dbname/MANIFEST-[0-9]+
77// dbname/[0-9]+.(log|sst|ldb)
78bool ParseFileName(const std::string& filename, uint64_t* number,
79 FileType* type) {
80 Slice rest(filename);
81 if (rest == "CURRENT") {
82 *number = 0;
83 *type = kCurrentFile;
84 } else if (rest == "LOCK") {
85 *number = 0;
86 *type = kDBLockFile;
87 } else if (rest == "LOG" || rest == "LOG.old") {
88 *number = 0;
89 *type = kInfoLogFile;
90 } else if (rest.starts_with("MANIFEST-")) {
91 rest.remove_prefix(strlen("MANIFEST-"));
92 uint64_t num;
93 if (!ConsumeDecimalNumber(&rest, &num)) {
94 return false;
95 }
96 if (!rest.empty()) {
97 return false;
98 }
99 *type = kDescriptorFile;
100 *number = num;
101 } else {
102 // Avoid strtoull() to keep filename format independent of the
103 // current locale
104 uint64_t num;
105 if (!ConsumeDecimalNumber(&rest, &num)) {
106 return false;
107 }
108 Slice suffix = rest;
109 if (suffix == Slice(".log")) {
110 *type = kLogFile;
111 } else if (suffix == Slice(".sst") || suffix == Slice(".ldb")) {
112 *type = kTableFile;
113 } else if (suffix == Slice(".dbtmp")) {
114 *type = kTempFile;
115 } else {
116 return false;
117 }
118 *number = num;
119 }
120 return true;
121}
122
123Status SetCurrentFile(Env* env, const std::string& dbname,
124 uint64_t descriptor_number) {

Callers 11

GetFilesMethod · 0.85
CorruptMethod · 0.85
DeleteAnSSTFileMethod · 0.85
RenameLDBToSSTMethod · 0.85
DeleteObsoleteFilesMethod · 0.85
RecoverMethod · 0.85
DestroyDBFunction · 0.85
TESTFunction · 0.85
FindFilesMethod · 0.85
GuessTypeFunction · 0.85
ReuseManifestMethod · 0.85

Calls 3

ConsumeDecimalNumberFunction · 0.85
SliceClass · 0.50
emptyMethod · 0.45

Tested by 5

GetFilesMethod · 0.68
CorruptMethod · 0.68
DeleteAnSSTFileMethod · 0.68
RenameLDBToSSTMethod · 0.68
TESTFunction · 0.68