Move inactive_node and node_wrapper into their own files

This commit is contained in:
Dimitrios Siganos 2024-04-08 17:53:18 +09:00
commit 92504e04f8
12 changed files with 136 additions and 96 deletions

View file

@ -4,6 +4,7 @@
#include <nano/node/active_transactions.hpp>
#include <nano/node/confirming_set.hpp>
#include <nano/node/election.hpp>
#include <nano/node/inactive_node.hpp>
#include <nano/node/local_vote_history.hpp>
#include <nano/node/make_store.hpp>
#include <nano/node/scheduler/component.hpp>

View file

@ -1,6 +1,7 @@
#include <nano/boost/asio/ip/address_v6.hpp>
#include <nano/boost/asio/ip/network_v6.hpp>
#include <nano/lib/thread_runner.hpp>
#include <nano/node/inactive_node.hpp>
#include <nano/node/transport/socket.hpp>
#include <nano/node/transport/tcp_listener.hpp>
#include <nano/test_common/system.hpp>

View file

@ -1,6 +1,7 @@
#include <nano/lib/blocks.hpp>
#include <nano/node/active_transactions.hpp>
#include <nano/node/election.hpp>
#include <nano/node/inactive_node.hpp>
#include <nano/secure/ledger.hpp>
#include <nano/store/versioning.hpp>
#include <nano/test_common/system.hpp>

View file

@ -8,6 +8,7 @@
#include <nano/node/cli.hpp>
#include <nano/node/confirming_set.hpp>
#include <nano/node/daemonconfig.hpp>
#include <nano/node/inactive_node.hpp>
#include <nano/node/ipc/ipc_server.hpp>
#include <nano/node/json_handler.hpp>
#include <nano/node/node.hpp>

View file

@ -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

View file

@ -5,6 +5,7 @@
#include <nano/node/cli.hpp>
#include <nano/node/common.hpp>
#include <nano/node/daemonconfig.hpp>
#include <nano/node/inactive_node.hpp>
#include <nano/node/node.hpp>
#include <nano/secure/ledger.hpp>

View file

@ -0,0 +1,29 @@
#include <nano/node/active_transactions.hpp>
#include <nano/node/inactive_node.hpp>
#include <nano/node/node.hpp>
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;
}

View file

@ -0,0 +1,27 @@
#pragma once
#include <nano/node/node_wrapper.hpp>
#include <boost/program_options/variables_map.hpp>
#include <filesystem>
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<nano::node> node;
};
std::unique_ptr<nano::inactive_node> default_inactive_node (std::filesystem::path const &, boost::program_options::variables_map const &);
} // namespace nano

View file

@ -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<boost::asio::io_context> ()),
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<nano::node> (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;
}
}

View file

@ -236,26 +236,4 @@ std::unique_ptr<container_info_component> 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<boost::asio::io_context> io_context;
nano::work_pool work;
std::shared_ptr<nano::node> 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<nano::node> node;
};
std::unique_ptr<nano::inactive_node> default_inactive_node (std::filesystem::path const &, boost::program_options::variables_map const &);
}
}

View file

@ -0,0 +1,41 @@
#include <nano/node/daemonconfig.hpp>
#include <nano/node/node.hpp>
#include <nano/node/node_wrapper.hpp>
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<boost::asio::io_context> ()),
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<nano::node> (io_context, path_a, node_config, work, node_flags_a);
}
nano::node_wrapper::~node_wrapper ()
{
node->stop ();
}

View file

@ -0,0 +1,28 @@
#pragma once
#include <nano/lib/work.hpp>
#include <nano/secure/common.hpp>
#include <boost/asio/io_context.hpp>
#include <filesystem>
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<boost::asio::io_context> io_context;
nano::work_pool work;
std::shared_ptr<nano::node> node;
};
}