Skip to content

reputation/reputation_storage.hpp

RocksDB-backed reputation persistence (PTDS §4.2) More...

Namespaces

Name
sgns
sgns::neoswarm
sgns::neoswarm::reputation

Classes

Name
class sgns::neoswarm::reputation::ReputationStorage
Persists NodeReputation records to RocksDB. Falls back to an in-memory store when RocksDB is not compiled in.

Detailed Description

RocksDB-backed reputation persistence (PTDS §4.2)

Date: 2026-05-06

Source code

#ifndef NEOSWARM_REPUTATION_REPUTATIONSTORAGE_HPP
#define NEOSWARM_REPUTATION_REPUTATIONSTORAGE_HPP

#include "node_reputation.hpp"
#include "common/error.hpp"
#include <memory>
#include <optional>
#include <string>
#include <vector>

namespace sgns::neoswarm::reputation
{
    class ReputationStorage
    {
        public:
        explicit ReputationStorage( const std::string& db_path );
        ~ReputationStorage();

        outcome::result<void> Open();

        void Close();

        outcome::result<void> Put( const NodeReputation& rep );

        outcome::result<void> PutBatch( const std::vector<NodeReputation>& records );

        outcome::result<NodeReputation> Get( const std::string& identity_key ) const;

        outcome::result<void> Remove( const std::string& identity_key );

        outcome::result<std::vector<NodeReputation>> GetAll() const;

        bool IsOpen() const
        {
            return open_;
        }

        private:
        struct Impl;
        std::unique_ptr<Impl> m_impl;
        std::string db_path_;
        bool open_ = false;

        static std::string Serialize( const NodeReputation& rep );
        static outcome::result<NodeReputation> Deserialize( const std::string& data );
    };

} // namespace sgns::neoswarm::reputation

#endif // NEOSWARM_REPUTATION_REPUTATIONSTORAGE_HPP

Updated on 2026-07-25 at 22:56:57 +0000