Move handling handshake flags into handshake message class

This commit is contained in:
Piotr Wójcik 2023-02-19 20:12:10 +01:00 committed by Colin LeMahieu
commit 079d25341c
No known key found for this signature in database
GPG key ID: 43708520C8DFB938
2 changed files with 31 additions and 39 deletions

View file

@ -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);
}

View file

@ -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 &);
};
/**