Skip to content

src/storage/changes_trie/changes_tracker.hpp

Namespaces

Name
sgns
sgns::storage
sgns::storage::changes_trie

Classes

Name
class sgns::storage::changes_trie::ChangesTracker

Source code

#ifndef SUPERGENIUS_STORAGE_CHANGES_TRIE_CHANGES_TRACKER
#define SUPERGENIUS_STORAGE_CHANGES_TRIE_CHANGES_TRACKER

#include "base/buffer.hpp"
#include "primitives/common.hpp"
#include "storage/changes_trie/changes_trie_config.hpp"
#include "singleton/IComponent.hpp"

namespace sgns::storage::changes_trie {

  class ChangesTracker : public IComponent {
   public:
    using GetExtrinsicIndexDelegate =
        std::function<outcome::result<base::Buffer>()>;

    ~ChangesTracker() override = default;

    virtual void setExtrinsicIdxGetter(GetExtrinsicIndexDelegate f) = 0;

    virtual outcome::result<void> onBlockChange(
        primitives::BlockHash new_parent_hash,
        primitives::BlockNumber new_parent_number) = 0;

    virtual outcome::result<void> onPut(const base::Buffer &key,
                                        const base::Buffer &value,
                                        bool new_entry) = 0;
    virtual outcome::result<void> onRemove(const base::Buffer &key) = 0;

    virtual outcome::result<base::Hash256> constructChangesTrie(
        const primitives::BlockHash &parent, const ChangesTrieConfig &conf) = 0;
  };

}  // namespace sgns::storage::changes_trie

#endif  // SUPERGENIUS_STORAGE_CHANGES_TRIE_CHANGES_TRACKER

Updated on 2026-03-04 at 13:10:45 -0800