From b6dcf1de5477d6daeb2d70eb82736455ad0d99a7 Mon Sep 17 00:00:00 2001 From: clemahieu Date: Tue, 22 Jun 2021 14:43:11 +0200 Subject: [PATCH] This renames bootstrap_server_type to socket::type and moves the type declaration on to the socket class since this is a socket-related property, not necessarily related to bootstrapping. (#3350) --- nano/node/bootstrap/bootstrap_server.cpp | 20 ++++++++++---------- nano/node/bootstrap/bootstrap_server.hpp | 9 +-------- nano/node/network.cpp | 2 +- nano/node/socket.hpp | 7 +++++++ nano/node/transport/tcp.cpp | 10 +++++----- nano/node/transport/tcp.hpp | 5 ++--- 6 files changed, 26 insertions(+), 27 deletions(-) diff --git a/nano/node/bootstrap/bootstrap_server.cpp b/nano/node/bootstrap/bootstrap_server.cpp index a463d624..88eebff6 100644 --- a/nano/node/bootstrap/bootstrap_server.cpp +++ b/nano/node/bootstrap/bootstrap_server.cpp @@ -111,11 +111,11 @@ nano::bootstrap_server::~bootstrap_server () { node->logger.try_log ("Exiting incoming TCP/bootstrap server"); } - if (type == nano::bootstrap_server_type::bootstrap) + if (type == nano::socket::type_t::bootstrap) { --node->bootstrap.bootstrap_count; } - else if (type == nano::bootstrap_server_type::realtime) + else if (type == nano::socket::type_t::realtime) { --node->bootstrap.realtime_count; // Clear temporary channel @@ -524,7 +524,7 @@ void nano::bootstrap_server::receive_node_id_handshake_action (boost::system::er auto request (std::make_unique (error, stream, header_a)); if (!error) { - if (type == nano::bootstrap_server_type::undefined && !node->flags.disable_tcp_realtime) + if (type == nano::socket::type_t::undefined && !node->flags.disable_tcp_realtime) { add_request (std::unique_ptr (request.release ())); } @@ -696,7 +696,7 @@ public: if (!connection->node->network.syn_cookies.validate (nano::transport::map_tcp_to_endpoint (connection->remote_endpoint), node_id, message_a.response->second) && node_id != connection->node->node_id.pub) { connection->remote_node_id = node_id; - connection->type = nano::bootstrap_server_type::realtime; + connection->type = nano::socket::type_t::realtime; ++connection->node->bootstrap.realtime_count; connection->finish_request_async (); } @@ -711,8 +711,8 @@ public: connection->finish_request_async (); } nano::account node_id (connection->remote_node_id); - nano::bootstrap_server_type type (connection->type); - debug_assert (node_id.is_zero () || type == nano::bootstrap_server_type::realtime); + nano::socket::type_t type (connection->type); + debug_assert (node_id.is_zero () || type == nano::socket::type_t::realtime); connection->node->network.tcp_message_manager.put_message (nano::tcp_message_item{ std::make_shared (message_a), connection->remote_endpoint, connection->remote_node_id, connection->socket, connection->type }); } std::shared_ptr connection; @@ -753,15 +753,15 @@ void nano::bootstrap_server::run_next (nano::unique_lock & lock_a) bool nano::bootstrap_server::is_bootstrap_connection () { - if (type == nano::bootstrap_server_type::undefined && !node->flags.disable_bootstrap_listener && node->bootstrap.bootstrap_count < node->config.bootstrap_connections_max) + if (type == nano::socket::type_t::undefined && !node->flags.disable_bootstrap_listener && node->bootstrap.bootstrap_count < node->config.bootstrap_connections_max) { ++node->bootstrap.bootstrap_count; - type = nano::bootstrap_server_type::bootstrap; + type = nano::socket::type_t::bootstrap; } - return type == nano::bootstrap_server_type::bootstrap; + return type == nano::socket::type_t::bootstrap; } bool nano::bootstrap_server::is_realtime_connection () { - return type == nano::bootstrap_server_type::realtime || type == nano::bootstrap_server_type::realtime_response_server; + return type == nano::socket::type_t::realtime || type == nano::socket::type_t::realtime_response_server; } diff --git a/nano/node/bootstrap/bootstrap_server.hpp b/nano/node/bootstrap/bootstrap_server.hpp index b0240621..767b7e79 100644 --- a/nano/node/bootstrap/bootstrap_server.hpp +++ b/nano/node/bootstrap/bootstrap_server.hpp @@ -34,13 +34,6 @@ private: std::unique_ptr collect_container_info (bootstrap_listener & bootstrap_listener, std::string const & name); class message; -enum class bootstrap_server_type -{ - undefined, - bootstrap, - realtime, - realtime_response_server // special type for tcp channel response server -}; class bootstrap_server final : public std::enable_shared_from_this { public: @@ -71,7 +64,7 @@ public: nano::mutex mutex; std::queue> requests; std::atomic stopped{ false }; - std::atomic type{ nano::bootstrap_server_type::undefined }; + std::atomic type{ nano::socket::type_t::undefined }; // Remote enpoint used to remove response channel even after socket closing nano::tcp_endpoint remote_endpoint{ boost::asio::ip::address_v6::any (), 0 }; nano::account remote_node_id{ 0 }; diff --git a/nano/node/network.cpp b/nano/node/network.cpp index 8c82635c..a2a28305 100644 --- a/nano/node/network.cpp +++ b/nano/node/network.cpp @@ -925,7 +925,7 @@ nano::tcp_message_item nano::tcp_message_manager::get_message () } else { - result = nano::tcp_message_item{ std::make_shared (), nano::tcp_endpoint (boost::asio::ip::address_v6::any (), 0), 0, nullptr, nano::bootstrap_server_type::undefined }; + result = nano::tcp_message_item{ std::make_shared (), nano::tcp_endpoint (boost::asio::ip::address_v6::any (), 0), 0, nullptr, nano::socket::type_t::undefined }; } lock.unlock (); producer_condition.notify_one (); diff --git a/nano/node/socket.hpp b/nano/node/socket.hpp index 95fd68b5..6d71d278 100644 --- a/nano/node/socket.hpp +++ b/nano/node/socket.hpp @@ -33,6 +33,13 @@ class socket : public std::enable_shared_from_this friend class server_socket; public: + enum class type_t + { + undefined, + bootstrap, + realtime, + realtime_response_server // special type for tcp channel response server + }; /** * Constructor * @param node Owning node diff --git a/nano/node/transport/tcp.cpp b/nano/node/transport/tcp.cpp index 47c45352..964f11ab 100644 --- a/nano/node/transport/tcp.cpp +++ b/nano/node/transport/tcp.cpp @@ -288,7 +288,7 @@ void nano::transport::tcp_channels::process_messages () } } -void nano::transport::tcp_channels::process_message (nano::message const & message_a, nano::tcp_endpoint const & endpoint_a, nano::account const & node_id_a, std::shared_ptr const & socket_a, nano::bootstrap_server_type type_a) +void nano::transport::tcp_channels::process_message (nano::message const & message_a, nano::tcp_endpoint const & endpoint_a, nano::account const & node_id_a, std::shared_ptr const & socket_a, nano::socket::type_t type_a) { if (!stopped && message_a.header.version_using >= protocol_constants ().protocol_version_min ()) { @@ -315,9 +315,9 @@ void nano::transport::tcp_channels::process_message (nano::message const & messa temporary_channel->set_node_id (node_id_a); temporary_channel->set_network_version (message_a.header.version_using); temporary_channel->temporary = true; - debug_assert (type_a == nano::bootstrap_server_type::realtime || type_a == nano::bootstrap_server_type::realtime_response_server); + debug_assert (type_a == nano::socket::type_t::realtime || type_a == nano::socket::type_t::realtime_response_server); // Don't insert temporary channels for response_server - if (type_a == nano::bootstrap_server_type::realtime) + if (type_a == nano::socket::type_t::realtime) { insert (temporary_channel, socket_a, nullptr); } @@ -327,7 +327,7 @@ void nano::transport::tcp_channels::process_message (nano::message const & messa { // Initial node_id_handshake request without node ID debug_assert (message_a.header.type == nano::message_type::node_id_handshake); - debug_assert (type_a == nano::bootstrap_server_type::undefined); + debug_assert (type_a == nano::socket::type_t::undefined); node.stats.inc (nano::stat::type::message, nano::stat::detail::node_id_handshake, nano::stat::dir::in); } } @@ -691,7 +691,7 @@ void nano::transport::tcp_channels::start_tcp_receive_node_id (std::shared_ptrtype = nano::bootstrap_server_type::realtime_response_server; + response_server->type = nano::socket::type_t::realtime_response_server; response_server->remote_node_id = channel_a->get_node_id (); response_server->receive (); node_l->network.tcp_channels.remove_node_id_handshake_socket (socket_l); diff --git a/nano/node/transport/tcp.hpp b/nano/node/transport/tcp.hpp index d6531ef1..e9241059 100644 --- a/nano/node/transport/tcp.hpp +++ b/nano/node/transport/tcp.hpp @@ -17,7 +17,6 @@ namespace mi = boost::multi_index; namespace nano { class bootstrap_server; -enum class bootstrap_server_type; class tcp_message_item final { public: @@ -25,7 +24,7 @@ public: nano::tcp_endpoint endpoint; nano::account node_id; std::shared_ptr socket; - nano::bootstrap_server_type type; + nano::socket::type_t type; }; namespace transport { @@ -93,7 +92,7 @@ namespace transport void start (); void stop (); void process_messages (); - void process_message (nano::message const &, nano::tcp_endpoint const &, nano::account const &, std::shared_ptr const &, nano::bootstrap_server_type); + void process_message (nano::message const &, nano::tcp_endpoint const &, nano::account const &, std::shared_ptr const &, nano::socket::type_t); bool max_ip_connections (nano::tcp_endpoint const &); // Should we reach out to this endpoint with a keepalive message bool reachout (nano::endpoint const &);