From 7ec302e0e48c28207662a0d4417ff3260e7ed771 Mon Sep 17 00:00:00 2001 From: Kevin Heifner Date: Fri, 19 Jan 2024 16:48:41 -0600 Subject: [PATCH] GH-2048 Support const --- libraries/chain/controller.cpp | 2 +- libraries/chain/include/eosio/chain/fork_database.hpp | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/libraries/chain/controller.cpp b/libraries/chain/controller.cpp index 75aae0eabe..600251aaa1 100644 --- a/libraries/chain/controller.cpp +++ b/libraries/chain/controller.cpp @@ -811,7 +811,7 @@ struct controller_impl { chainbase::database db; block_log blog; std::optional pending; - mutable fork_database fork_db; + fork_database fork_db; std::optional pacemaker; std::atomic if_irreversible_block_num{0}; resource_limits_manager resource_limits; diff --git a/libraries/chain/include/eosio/chain/fork_database.hpp b/libraries/chain/include/eosio/chain/fork_database.hpp index 654b583095..9e90c6e310 100644 --- a/libraries/chain/include/eosio/chain/fork_database.hpp +++ b/libraries/chain/include/eosio/chain/fork_database.hpp @@ -133,6 +133,15 @@ namespace eosio::chain { return std::visit([&](auto& forkdb) -> R { return f(forkdb); }, v); } + template + R apply(const F& f) const { + std::lock_guard g(m); + if constexpr (std::is_same_v) + std::visit([&](const auto& forkdb) { f(forkdb); }, v); + else + return std::visit([&](const auto& forkdb) -> R { return f(forkdb); }, v); + } + template R apply_if(const F& f) { if constexpr (std::is_same_v)