LCOV - code coverage report
Current view: top level - src/leveldb/db - version_edit.h (source / functions) Hit Total Coverage
Test: total_coverage.info Lines: 25 33 75.8 %
Date: 2015-10-12 22:39:14 Functions: 7 13 53.8 %
Legend: Lines: hit not hit

          Line data    Source code
       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        5080 : struct FileMetaData {
      18             :   int refs;
      19             :   int allowed_seeks;          // Seeks allowed until compaction
      20             :   uint64_t number;
      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        1268 :   FileMetaData() : refs(0), allowed_seeks(1 << 30), file_size(0) { }
      26             : };
      27             : 
      28             : class VersionEdit {
      29             :  public:
      30        4915 :   VersionEdit() { Clear(); }
      31        2949 :   ~VersionEdit() { }
      32             : 
      33             :   void Clear();
      34             : 
      35         373 :   void SetComparatorName(const Slice& name) {
      36         373 :     has_comparator_ = true;
      37         746 :     comparator_ = name.ToString();
      38         373 :   }
      39           0 :   void SetLogNumber(uint64_t num) {
      40         380 :     has_log_number_ = true;
      41         380 :     log_number_ = num;
      42           0 :   }
      43           0 :   void SetPrevLogNumber(uint64_t num) {
      44         251 :     has_prev_log_number_ = true;
      45         251 :     prev_log_number_ = num;
      46           0 :   }
      47           0 :   void SetNextFile(uint64_t num) {
      48         624 :     has_next_file_number_ = true;
      49         624 :     next_file_number_ = num;
      50           0 :   }
      51           0 :   void SetLastSequence(SequenceNumber seq) {
      52         380 :     has_last_sequence_ = true;
      53         380 :     last_sequence_ = seq;
      54           0 :   }
      55           7 :   void SetCompactPointer(int level, const InternalKey& key) {
      56          21 :     compact_pointers_.push_back(std::make_pair(level, key));
      57           7 :   }
      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         160 :   void AddFile(int level, uint64_t file,
      63             :                uint64_t file_size,
      64             :                const InternalKey& smallest,
      65             :                const InternalKey& largest) {
      66             :     FileMetaData f;
      67         160 :     f.number = file;
      68         160 :     f.file_size = file_size;
      69             :     f.smallest = smallest;
      70             :     f.largest = largest;
      71         480 :     new_files_.push_back(std::make_pair(level, f));
      72         160 :   }
      73             : 
      74             :   // Delete the specified "file" from the specified "level".
      75             :   void DeleteFile(int level, uint64_t file) {
      76          54 :     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_;
      90             :   uint64_t log_number_;
      91             :   uint64_t prev_log_number_;
      92             :   uint64_t next_file_number_;
      93             :   SequenceNumber last_sequence_;
      94             :   bool has_comparator_;
      95             :   bool has_log_number_;
      96             :   bool has_prev_log_number_;
      97             :   bool has_next_file_number_;
      98             :   bool has_last_sequence_;
      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_

Generated by: LCOV version 1.11