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.
5 // WriteBatch holds a collection of updates to apply atomically to a DB.
7 // The updates are applied in the order in which they are added
8 // to the WriteBatch. For example, the value of "key" will be "v3"
9 // after the following batch is written:
11 // batch.Put("key", "v1");
12 // batch.Delete("key");
13 // batch.Put("key", "v2");
14 // batch.Put("key", "v3");
16 // Multiple threads can invoke const methods on a WriteBatch without
17 // external synchronization, but if any of the threads may call a
18 // non-const method, all threads accessing the same WriteBatch must use
19 // external synchronization.
21 #ifndef STORAGE_LEVELDB_INCLUDE_WRITE_BATCH_H_
22 #define STORAGE_LEVELDB_INCLUDE_WRITE_BATCH_H_
25 #include "leveldb/status.h"
36 // Store the mapping "key->value" in the database.
37 void Put(const Slice& key, const Slice& value);
39 // If the database contains a mapping for "key", erase it. Else do nothing.
40 void Delete(const Slice& key);
42 // Clear all updates buffered in this batch.
45 // Support for iterating over the contents of a batch.
49 virtual void Put(const Slice& key, const Slice& value) = 0;
50 virtual void Delete(const Slice& key) = 0;
52 Status Iterate(Handler* handler) const;
55 friend class WriteBatchInternal;
57 std::string rep_; // See comment in write_batch.cc for the format of rep_
59 // Intentionally copyable
62 } // namespace leveldb
64 #endif // STORAGE_LEVELDB_INCLUDE_WRITE_BATCH_H_