xref: /aosp_15_r20/external/leveldb/db/write_batch_internal.h (revision 9507f98c5f32dee4b5f9e4a38cd499f3ff5c4490)
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