src/storage/in_memory/in_memory_batch.hpp¶
Namespaces¶
| Name |
|---|
| sgns |
| sgns::storage |
Classes¶
| Name | |
|---|---|
| class | sgns::storage::InMemoryBatch |
| class | sgns::storage::Buffer Class represents arbitrary (including empty) byte buffer. |
Source code¶
#ifndef SUPERGENIUS_IN_MEMORY_BATCH_HPP
#define SUPERGENIUS_IN_MEMORY_BATCH_HPP
#include "base/buffer.hpp"
#include "storage/in_memory/in_memory_storage.hpp"
namespace sgns::storage {
using sgns::base::Buffer;
class InMemoryBatch
: public sgns::storage::face::WriteBatch<Buffer,
Buffer> {
public:
explicit InMemoryBatch(InMemoryStorage &db) : db{db} {}
outcome::result<void> put(const Buffer &key,
const Buffer &value) override {
entries[key.toHex()] = value;
return outcome::success();
}
outcome::result<void> put(const Buffer &key,
Buffer &&value) override {
entries[key.toHex()] = std::move(value);
return outcome::success();
}
outcome::result<void> remove(const Buffer &key) override {
entries.erase(key.toHex());
return outcome::success();
}
outcome::result<void> commit() override {
for (auto &entry : entries) {
BOOST_OUTCOME_TRYV2(auto &&,
db.put(Buffer::fromHex(entry.first).value(), entry.second));
}
return outcome::success();
}
void clear() override {
entries.clear();
}
private:
std::map<std::string, Buffer> entries;
InMemoryStorage &db;
};
} // namespace sgns::storage
#endif // SUPERGENIUS_IN_MEMORY_BATCH_HPP
Updated on 2026-03-04 at 13:10:45 -0800