diff --git a/nano/core_test/node.cpp b/nano/core_test/node.cpp index b9c14f7a..0b7e049b 100644 --- a/nano/core_test/node.cpp +++ b/nano/core_test/node.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include diff --git a/nano/core_test/socket.cpp b/nano/core_test/socket.cpp index 85d82117..2f734e4e 100644 --- a/nano/core_test/socket.cpp +++ b/nano/core_test/socket.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include diff --git a/nano/core_test/wallets.cpp b/nano/core_test/wallets.cpp index 283f776d..c692b177 100644 --- a/nano/core_test/wallets.cpp +++ b/nano/core_test/wallets.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include diff --git a/nano/nano_node/entry.cpp b/nano/nano_node/entry.cpp index ff031e71..06fe4b9a 100644 --- a/nano/nano_node/entry.cpp +++ b/nano/nano_node/entry.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include diff --git a/nano/node/CMakeLists.txt b/nano/node/CMakeLists.txt index 77f60640..aa7b9a77 100644 --- a/nano/node/CMakeLists.txt +++ b/nano/node/CMakeLists.txt @@ -107,6 +107,10 @@ add_library( node_observers.cpp node_rpc_config.hpp node_rpc_config.cpp + node_wrapper.hpp + node_wrapper.cpp + inactive_node.hpp + inactive_node.cpp node.hpp node.cpp online_reps.hpp diff --git a/nano/node/cli.cpp b/nano/node/cli.cpp index 449bb755..df480e56 100644 --- a/nano/node/cli.cpp +++ b/nano/node/cli.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include diff --git a/nano/node/inactive_node.cpp b/nano/node/inactive_node.cpp new file mode 100644 index 00000000..6ceb33ac --- /dev/null +++ b/nano/node/inactive_node.cpp @@ -0,0 +1,29 @@ +#include +#include +#include + +nano::inactive_node::inactive_node (std::filesystem::path const & path_a, std::filesystem::path const & config_path_a, nano::node_flags const & node_flags_a) : + node_wrapper (path_a, config_path_a, node_flags_a), + node (node_wrapper.node) +{ + node_wrapper.node->active.stop (); +} + +nano::inactive_node::inactive_node (std::filesystem::path const & path_a, nano::node_flags const & node_flags_a) : + inactive_node (path_a, path_a, node_flags_a) +{ +} + +nano::node_flags const & nano::inactive_node_flag_defaults () +{ + static nano::node_flags node_flags; + node_flags.inactive_node = true; + node_flags.read_only = true; + node_flags.generate_cache.reps = false; + node_flags.generate_cache.cemented_count = false; + node_flags.generate_cache.unchecked_count = false; + node_flags.generate_cache.account_count = false; + node_flags.disable_bootstrap_listener = true; + node_flags.disable_tcp_realtime = true; + return node_flags; +} diff --git a/nano/node/inactive_node.hpp b/nano/node/inactive_node.hpp new file mode 100644 index 00000000..50651d69 --- /dev/null +++ b/nano/node/inactive_node.hpp @@ -0,0 +1,27 @@ +#pragma once + +#include + +#include + +#include + +namespace nano +{ + +class node; +class node_flags; + +class inactive_node final +{ +public: + inactive_node (std::filesystem::path const & path_a, nano::node_flags const & node_flags_a); + inactive_node (std::filesystem::path const & path_a, std::filesystem::path const & config_path_a, nano::node_flags const & node_flags_a); + + nano::node_wrapper node_wrapper; + std::shared_ptr node; +}; + +std::unique_ptr default_inactive_node (std::filesystem::path const &, boost::program_options::variables_map const &); + +} // namespace nano \ No newline at end of file diff --git a/nano/node/node.cpp b/nano/node/node.cpp index ad80e5e0..31eaf231 100644 --- a/nano/node/node.cpp +++ b/nano/node/node.cpp @@ -1376,76 +1376,4 @@ std::string nano::node::make_logger_identifier (const nano::keypair & node_id) { // Node identifier consists of first 10 characters of node id return node_id.pub.to_node_id ().substr (0, 10); -} - -/* - * node_wrapper - */ - -nano::node_wrapper::node_wrapper (std::filesystem::path const & path_a, std::filesystem::path const & config_path_a, nano::node_flags const & node_flags_a) : - network_params{ nano::network_constants::active_network }, - io_context (std::make_shared ()), - work{ network_params.network, 1 } -{ - /* - * @warning May throw a filesystem exception - */ - std::filesystem::create_directories (path_a); - - boost::system::error_code error_chmod; - nano::set_secure_perm_directory (path_a, error_chmod); - - nano::daemon_config daemon_config{ path_a, network_params }; - auto error = nano::read_node_config_toml (config_path_a, daemon_config, node_flags_a.config_overrides); - if (error) - { - std::cerr << "Error deserializing config file"; - if (!node_flags_a.config_overrides.empty ()) - { - std::cerr << " or --config option"; - } - std::cerr << "\n" - << error.get_message () << std::endl; - std::exit (1); - } - - auto & node_config = daemon_config.node; - node_config.peering_port = 24000; - - node = std::make_shared (io_context, path_a, node_config, work, node_flags_a); -} - -nano::node_wrapper::~node_wrapper () -{ - node->stop (); -} - -/* - * inactive_node - */ - -nano::inactive_node::inactive_node (std::filesystem::path const & path_a, std::filesystem::path const & config_path_a, nano::node_flags const & node_flags_a) : - node_wrapper (path_a, config_path_a, node_flags_a), - node (node_wrapper.node) -{ - node_wrapper.node->active.stop (); -} - -nano::inactive_node::inactive_node (std::filesystem::path const & path_a, nano::node_flags const & node_flags_a) : - inactive_node (path_a, path_a, node_flags_a) -{ -} - -nano::node_flags const & nano::inactive_node_flag_defaults () -{ - static nano::node_flags node_flags; - node_flags.inactive_node = true; - node_flags.read_only = true; - node_flags.generate_cache.reps = false; - node_flags.generate_cache.cemented_count = false; - node_flags.generate_cache.unchecked_count = false; - node_flags.generate_cache.account_count = false; - node_flags.disable_bootstrap_listener = true; - node_flags.disable_tcp_realtime = true; - return node_flags; -} +} \ No newline at end of file diff --git a/nano/node/node.hpp b/nano/node/node.hpp index c5df2fea..3a4bfdcc 100644 --- a/nano/node/node.hpp +++ b/nano/node/node.hpp @@ -236,26 +236,4 @@ std::unique_ptr collect_container_info (node & node, s nano::node_flags const & inactive_node_flag_defaults (); -class node_wrapper final -{ -public: - node_wrapper (std::filesystem::path const & path_a, std::filesystem::path const & config_path_a, nano::node_flags const & node_flags_a); - ~node_wrapper (); - - nano::network_params network_params; - std::shared_ptr io_context; - nano::work_pool work; - std::shared_ptr node; -}; - -class inactive_node final -{ -public: - inactive_node (std::filesystem::path const & path_a, nano::node_flags const & node_flags_a); - inactive_node (std::filesystem::path const & path_a, std::filesystem::path const & config_path_a, nano::node_flags const & node_flags_a); - - nano::node_wrapper node_wrapper; - std::shared_ptr node; -}; -std::unique_ptr default_inactive_node (std::filesystem::path const &, boost::program_options::variables_map const &); -} +} \ No newline at end of file diff --git a/nano/node/node_wrapper.cpp b/nano/node/node_wrapper.cpp new file mode 100644 index 00000000..5f4f1a17 --- /dev/null +++ b/nano/node/node_wrapper.cpp @@ -0,0 +1,41 @@ +#include +#include +#include + +nano::node_wrapper::node_wrapper (std::filesystem::path const & path_a, std::filesystem::path const & config_path_a, nano::node_flags const & node_flags_a) : + network_params{ nano::network_constants::active_network }, + io_context (std::make_shared ()), + work{ network_params.network, 1 } +{ + /* + * @warning May throw a filesystem exception + */ + std::filesystem::create_directories (path_a); + + boost::system::error_code error_chmod; + nano::set_secure_perm_directory (path_a, error_chmod); + + nano::daemon_config daemon_config{ path_a, network_params }; + auto error = nano::read_node_config_toml (config_path_a, daemon_config, node_flags_a.config_overrides); + if (error) + { + std::cerr << "Error deserializing config file"; + if (!node_flags_a.config_overrides.empty ()) + { + std::cerr << " or --config option"; + } + std::cerr << "\n" + << error.get_message () << std::endl; + std::exit (1); + } + + auto & node_config = daemon_config.node; + node_config.peering_port = 24000; + + node = std::make_shared (io_context, path_a, node_config, work, node_flags_a); +} + +nano::node_wrapper::~node_wrapper () +{ + node->stop (); +} \ No newline at end of file diff --git a/nano/node/node_wrapper.hpp b/nano/node/node_wrapper.hpp new file mode 100644 index 00000000..082c5a78 --- /dev/null +++ b/nano/node/node_wrapper.hpp @@ -0,0 +1,28 @@ +#pragma once + +#include +#include + +#include + +#include + +namespace nano +{ + +class node; +class node_flags; + +class node_wrapper final +{ +public: + node_wrapper (std::filesystem::path const & path_a, std::filesystem::path const & config_path_a, nano::node_flags const & node_flags_a); + ~node_wrapper (); + + nano::network_params network_params; + std::shared_ptr io_context; + nano::work_pool work; + std::shared_ptr node; +}; + +} \ No newline at end of file