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_WRITE_BATCH_INTERNAL_H_ 6 #define STORAGE_LEVELDB_DB_WRITE_BATCH_INTERNAL_H_ 7 8 #include "leveldb/write_batch.h" 9 10 namespace leveldb { 11 12 class MemTable; 13 14 // WriteBatchInternal provides static methods for manipulating a 15 // WriteBatch that we don't want in the public WriteBatch interface. 16 class WriteBatchInternal { 17 public: 18 // Return the number of entries in the batch. 19 static int Count(const WriteBatch* batch); 20 21 // Set the count for the number of entries in the batch. 22 static void SetCount(WriteBatch* batch, int n); 23 24 // Return the seqeunce number for the start of this batch. 25 static SequenceNumber Sequence(const WriteBatch* batch); 26 27 // Store the specified number as the seqeunce number for the start of 28 // this batch. 29 static void SetSequence(WriteBatch* batch, SequenceNumber seq); 30 31 static Slice Contents(const WriteBatch* batch) { 32 return Slice(batch->rep_); 33 } 34 35 static size_t ByteSize(const WriteBatch* batch) { 36 return batch->rep_.size(); 37 } 38 39 static void SetContents(WriteBatch* batch, const Slice& contents); 40 41 static Status InsertInto(const WriteBatch* batch, MemTable* memtable); 42 43 static void Append(WriteBatch* dst, const WriteBatch* src); 44 }; 45 46 } // namespace leveldb 47 48 49 #endif // STORAGE_LEVELDB_DB_WRITE_BATCH_INTERNAL_H_ 50