From 079d25341cc241f7835021a88491a02c97cf43ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Wo=CC=81jcik?= <3044353+pwojcikdev@users.noreply.github.com> Date: Sun, 19 Feb 2023 20:12:10 +0100 Subject: [PATCH] Move handling handshake flags into handshake message class --- nano/node/messages.cpp | 58 +++++++++++++++++------------------------- nano/node/messages.hpp | 12 ++++++--- 2 files changed, 31 insertions(+), 39 deletions(-) diff --git a/nano/node/messages.cpp b/nano/node/messages.cpp index 08a2796d..4a704e48 100644 --- a/nano/node/messages.cpp +++ b/nano/node/messages.cpp @@ -238,32 +238,6 @@ bool nano::message_header::frontier_req_is_only_confirmed_present () const return result; } -bool nano::message_header::node_id_handshake_is_query () const -{ - auto result (false); - if (type == nano::message_type::node_id_handshake) - { - if (extensions.test (node_id_handshake_query_flag)) - { - result = true; - } - } - return result; -} - -bool nano::message_header::node_id_handshake_is_response () const -{ - auto result (false); - if (type == nano::message_type::node_id_handshake) - { - if (extensions.test (node_id_handshake_response_flag)) - { - result = true; - } - } - return result; -} - std::size_t nano::message_header::payload_length_bytes () const { switch (type) @@ -1626,11 +1600,11 @@ nano::node_id_handshake::node_id_handshake (nano::network_constants const & cons { if (query) { - header.flag_set (nano::message_header::node_id_handshake_query_flag); + header.flag_set (query_flag); } if (response) { - header.flag_set (nano::message_header::node_id_handshake_response_flag); + header.flag_set (response_flag); } } @@ -1654,14 +1628,14 @@ bool nano::node_id_handshake::deserialize (nano::stream & stream_a) auto error (false); try { - if (header.node_id_handshake_is_query ()) + if (is_query (header)) { nano::uint256_union query_hash; read (stream_a, query_hash); query = query_hash; } - if (header.node_id_handshake_is_response ()) + if (is_response (header)) { nano::account response_account; read (stream_a, response_account); @@ -1678,9 +1652,23 @@ bool nano::node_id_handshake::deserialize (nano::stream & stream_a) return error; } +bool nano::node_id_handshake::is_query (nano::message_header const & header) +{ + debug_assert (header.type == nano::message_type::node_id_handshake); + bool result = header.extensions.test (query_flag); + return result; +} + +bool nano::node_id_handshake::is_response (nano::message_header const & header) +{ + debug_assert (header.type == nano::message_type::node_id_handshake); + bool result = header.extensions.test (response_flag); + return result; +} + bool nano::node_id_handshake::operator== (nano::node_id_handshake const & other_a) const { - auto result (*query == *other_a.query && *response == *other_a.response); + bool result = (*query == *other_a.query && *response == *other_a.response); return result; } @@ -1694,14 +1682,14 @@ std::size_t nano::node_id_handshake::size () const return size (header); } -std::size_t nano::node_id_handshake::size (nano::message_header const & header_a) +std::size_t nano::node_id_handshake::size (nano::message_header const & header) { - std::size_t result (0); - if (header_a.node_id_handshake_is_query ()) + std::size_t result = 0; + if (is_query (header)) { result = sizeof (nano::uint256_union); } - if (header_a.node_id_handshake_is_response ()) + if (is_response (header)) { result += sizeof (nano::account) + sizeof (nano::signature); } diff --git a/nano/node/messages.hpp b/nano/node/messages.hpp index 55222546..5064a417 100644 --- a/nano/node/messages.hpp +++ b/nano/node/messages.hpp @@ -81,10 +81,6 @@ public: bool bulk_pull_ascending () const; static uint8_t constexpr frontier_req_only_confirmed = 1; bool frontier_req_is_only_confirmed_present () const; - static uint8_t constexpr node_id_handshake_query_flag = 0; - static uint8_t constexpr node_id_handshake_response_flag = 1; - bool node_id_handshake_is_query () const; - bool node_id_handshake_is_response () const; /** Size of the payload in bytes. For some messages, the payload size is based on header flags. */ std::size_t payload_length_bytes () const; @@ -363,6 +359,14 @@ public: std::size_t size () const; static std::size_t size (nano::message_header const &); std::string to_string () const; + +public: // Header + static uint8_t constexpr query_flag = 0; + static uint8_t constexpr response_flag = 1; + + static bool is_query (nano::message_header const &); + static bool is_response (nano::message_header const &); + }; /**