Skip to content

src/application/app_config.hpp

Namespaces

Name
sgns
sgns::application

Classes

Name
class sgns::application::AppConfiguration

Types

Name
using std::shared_ptr< AppConfiguration > AppConfigPtr

Types Documentation

using AppConfigPtr

using sgns::application::AppConfigPtr = std::shared_ptr<AppConfiguration>;

Source code

#ifndef SUPERGENIUS_APP_CONFIG_HPP
#define SUPERGENIUS_APP_CONFIG_HPP

#include <spdlog/spdlog.h>
#include <boost/asio/ip/tcp.hpp>
#include <memory>
#include <string>

namespace sgns::application
{

    class AppConfiguration
    {
    public:
        enum struct LoadScheme
        {
            kBlockProducing,
            kValidating,
            kFullSyncing,
        };

        virtual ~AppConfiguration() = default;

        [[nodiscard]] virtual const std::string &genesis_path() const = 0;

        [[nodiscard]] virtual const std::string &keystore_path() const = 0;

        [[nodiscard]] virtual const std::string &rocksdb_path() const = 0;

        [[nodiscard]] virtual uint16_t p2p_port() const = 0;

        [[nodiscard]] virtual const boost::asio::ip::tcp::endpoint &rpc_http_endpoint() const = 0;

        [[nodiscard]] virtual const boost::asio::ip::tcp::endpoint &rpc_ws_endpoint() const = 0;

        [[nodiscard]] virtual spdlog::level::level_enum verbosity() const = 0;

        [[nodiscard]] virtual bool is_only_finalizing() const = 0;

        virtual bool initialize_from_args( LoadScheme scheme, int argc, char **argv ) = 0;
    };

    using AppConfigPtr = std::shared_ptr<AppConfiguration>;

} // namespace sgns::application

#endif // SUPERGENIUS_APP_CONFIG_HPP

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