summaryrefslogtreecommitdiff
path: root/db/version_set.h
diff options
context:
space:
mode:
authordgrogan@chromium.org <dgrogan@chromium.org@62dab493-f737-651d-591e-8d6aee1b9529>2011-04-12 19:38:58 +0000
committerdgrogan@chromium.org <dgrogan@chromium.org@62dab493-f737-651d-591e-8d6aee1b9529>2011-04-12 19:38:58 +0000
commitf779e7a5d89f853fc5224f9eb8103ca2b8f2f555 (patch)
treeca48db37de2515489323a99272729a1d9f5be254 /db/version_set.h
parent9e33808a26cbbb38008fcd10b74c4d05d78d0aa1 (diff)
downloadleveldb-f779e7a5d89f853fc5224f9eb8103ca2b8f2f555.tar.gz
@20602303. Default file permission is now 755.
git-svn-id: https://leveldb.googlecode.com/svn/trunk@20 62dab493-f737-651d-591e-8d6aee1b9529
Diffstat (limited to 'db/version_set.h')
-rwxr-xr-x[-rw-r--r--]db/version_set.h35
1 files changed, 25 insertions, 10 deletions
diff --git a/db/version_set.h b/db/version_set.h
index a4199be..e1c5a4b 100644..100755
--- a/db/version_set.h
+++ b/db/version_set.h
@@ -24,12 +24,6 @@
namespace leveldb {
-// Grouping of constants. We may want to make some of these
-// parameters set via options.
-namespace config {
-static const int kNumLevels = 7;
-}
-
namespace log { class Writer; }
class Compaction;
@@ -107,7 +101,7 @@ class VersionSet {
Status LogAndApply(VersionEdit* edit, MemTable* cleanup_mem);
// Recover the last saved descriptor from persistent storage.
- Status Recover(uint64_t* log_number, SequenceNumber* last_sequence);
+ Status Recover();
// Save current contents to *log
Status WriteSnapshot(log::Writer* log);
@@ -124,6 +118,25 @@ class VersionSet {
// Return the number of Table files at the specified level.
int NumLevelFiles(int level) const;
+ // Return the combined file size of all files at the specified level.
+ int64_t NumLevelBytes(int level) const;
+
+ // Return the last sequence number.
+ uint64_t LastSequence() const { return last_sequence_; }
+
+ // Set the last sequence number to s.
+ void SetLastSequence(uint64_t s) {
+ assert(s >= last_sequence_);
+ last_sequence_ = s;
+ }
+
+ // Return the current log file number.
+ uint64_t LogNumber() const { return log_number_; }
+
+ // Return the log file number for the log file that is currently
+ // being compacted, or zero if there is no such log file.
+ uint64_t PrevLogNumber() const { return prev_log_number_; }
+
// Pick level and inputs for a new compaction.
// Returns NULL if there is no compaction to be done.
// Otherwise returns a pointer to a heap-allocated object that
@@ -168,9 +181,8 @@ class VersionSet {
// Cleanup the large value reference state by eliminating any
// references from files that are not includes in either "live_tables"
- // or "log_file".
- void CleanupLargeValueRefs(const std::set<uint64_t>& live_tables,
- uint64_t log_file_num);
+ // or the current log.
+ void CleanupLargeValueRefs(const std::set<uint64_t>& live_tables);
// Returns true if a large value with the given reference is live.
bool LargeValueIsLive(const LargeValueRef& large_ref);
@@ -213,6 +225,9 @@ class VersionSet {
const InternalKeyComparator icmp_;
uint64_t next_file_number_;
uint64_t manifest_file_number_;
+ uint64_t last_sequence_;
+ uint64_t log_number_;
+ uint64_t prev_log_number_; // 0 or backing store for memtable being compacted
// Opened lazily
WritableFile* descriptor_file_;