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