You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.8 KiB
64 lines
1.8 KiB
// Copyright (c) 2011 The LevelDB Authors. All rights reserved. |
|
// Use of this source code is governed by a BSD-style license that can be |
|
// found in the LICENSE file. See the AUTHORS file for names of contributors. |
|
// |
|
// WriteBatch holds a collection of updates to apply atomically to a DB. |
|
// |
|
// The updates are applied in the order in which they are added |
|
// to the WriteBatch. For example, the value of "key" will be "v3" |
|
// after the following batch is written: |
|
// |
|
// batch.Put("key", "v1"); |
|
// batch.Delete("key"); |
|
// batch.Put("key", "v2"); |
|
// batch.Put("key", "v3"); |
|
// |
|
// Multiple threads can invoke const methods on a WriteBatch without |
|
// external synchronization, but if any of the threads may call a |
|
// non-const method, all threads accessing the same WriteBatch must use |
|
// external synchronization. |
|
|
|
#ifndef STORAGE_LEVELDB_INCLUDE_WRITE_BATCH_H_ |
|
#define STORAGE_LEVELDB_INCLUDE_WRITE_BATCH_H_ |
|
|
|
#include <string> |
|
#include "leveldb/status.h" |
|
|
|
namespace leveldb { |
|
|
|
class Slice; |
|
|
|
class WriteBatch { |
|
public: |
|
WriteBatch(); |
|
~WriteBatch(); |
|
|
|
// Store the mapping "key->value" in the database. |
|
void Put(const Slice& key, const Slice& value); |
|
|
|
// If the database contains a mapping for "key", erase it. Else do nothing. |
|
void Delete(const Slice& key); |
|
|
|
// Clear all updates buffered in this batch. |
|
void Clear(); |
|
|
|
// Support for iterating over the contents of a batch. |
|
class Handler { |
|
public: |
|
virtual ~Handler(); |
|
virtual void Put(const Slice& key, const Slice& value) = 0; |
|
virtual void Delete(const Slice& key) = 0; |
|
}; |
|
Status Iterate(Handler* handler) const; |
|
|
|
private: |
|
friend class WriteBatchInternal; |
|
|
|
std::string rep_; // See comment in write_batch.cc for the format of rep_ |
|
|
|
// Intentionally copyable |
|
}; |
|
|
|
} // namespace leveldb |
|
|
|
#endif // STORAGE_LEVELDB_INCLUDE_WRITE_BATCH_H_
|
|
|