Feathercoin  0.5.0
P2P Digital Currency
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros
write_batch.h
Go to the documentation of this file.
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 // WriteBatch holds a collection of updates to apply atomically to a DB.
6 //
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:
10 //
11 // batch.Put("key", "v1");
12 // batch.Delete("key");
13 // batch.Put("key", "v2");
14 // batch.Put("key", "v3");
15 //
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.
20 
21 #ifndef STORAGE_LEVELDB_INCLUDE_WRITE_BATCH_H_
22 #define STORAGE_LEVELDB_INCLUDE_WRITE_BATCH_H_
23 
24 #include <string>
25 #include "leveldb/status.h"
26 
27 namespace leveldb {
28 
29 class Slice;
30 
31 class WriteBatch {
32  public:
33  WriteBatch();
34  ~WriteBatch();
35 
36  // Store the mapping "key->value" in the database.
37  void Put(const Slice& key, const Slice& value);
38 
39  // If the database contains a mapping for "key", erase it. Else do nothing.
40  void Delete(const Slice& key);
41 
42  // Clear all updates buffered in this batch.
43  void Clear();
44 
45  // Support for iterating over the contents of a batch.
46  class Handler {
47  public:
48  virtual ~Handler();
49  virtual void Put(const Slice& key, const Slice& value) = 0;
50  virtual void Delete(const Slice& key) = 0;
51  };
52  Status Iterate(Handler* handler) const;
53 
54  private:
55  friend class WriteBatchInternal;
56 
57  std::string rep_; // See comment in write_batch.cc for the format of rep_
58 
59  // Intentionally copyable
60 };
61 
62 } // namespace leveldb
63 
64 #endif // STORAGE_LEVELDB_INCLUDE_WRITE_BATCH_H_
std::string * value
Definition: version_set.cc:270
virtual void Put(const Slice &key, const Slice &value)=0
virtual void Delete(const Slice &key)=0
void Delete(const Slice &key)
Definition: write_batch.cc:105
Status Iterate(Handler *handler) const
Definition: write_batch.cc:42
std::string rep_
Definition: write_batch.h:57
void Put(const Slice &key, const Slice &value)
Definition: write_batch.cc:98