src/storage/trie/impl/trie_storage_backend_impl.cpp¶
Namespaces¶
| Name |
|---|
| sgns |
| sgns::storage |
| sgns::storage::trie |
Source code¶
#include "storage/trie/impl/trie_storage_backend_impl.hpp"
#include <utility>
#include "storage/trie/impl/trie_storage_backend_batch.hpp"
namespace sgns::storage::trie {
TrieStorageBackendImpl::TrieStorageBackendImpl(std::shared_ptr<BufferStorage> storage,
base::Buffer node_prefix)
: storage_{std::move(storage)}, node_prefix_{std::move(node_prefix)} {
BOOST_ASSERT(storage_ != nullptr);
}
std::unique_ptr<face::MapCursor<Buffer, Buffer>> TrieStorageBackendImpl::cursor() {
return storage_
->cursor(); // TODO(Harrm): perhaps should iterate over trie nodes only
}
std::unique_ptr<face::WriteBatch<Buffer, Buffer>> TrieStorageBackendImpl::batch() {
return std::make_unique<TrieStorageBackendBatch>(storage_->batch(),
node_prefix_);
}
outcome::result<Buffer> TrieStorageBackendImpl::get(const Buffer &key) const {
return storage_->get(prefixKey(key));
}
bool TrieStorageBackendImpl::contains(const Buffer &key) const {
return storage_->contains(prefixKey(key));
}
bool TrieStorageBackendImpl::empty() const {
return storage_->empty();
}
outcome::result<void> TrieStorageBackendImpl::put(const Buffer &key,
const Buffer &value) {
return storage_->put(prefixKey(key), value);
}
outcome::result<void> TrieStorageBackendImpl::put(const Buffer &key,
Buffer &&value) {
return storage_->put(prefixKey(key), std::move(value));
}
outcome::result<void> TrieStorageBackendImpl::remove(const Buffer &key) {
return storage_->remove(prefixKey(key));
}
base::Buffer TrieStorageBackendImpl::prefixKey(const base::Buffer &key) const {
return base::Buffer{node_prefix_}.put(key);
}
} // namespace sgns::storage::trie
Updated on 2026-03-04 at 13:10:45 -0800