Move handling handshake flags into handshake message class
This commit is contained in:
parent
955c79e664
commit
079d25341c
2 changed files with 31 additions and 39 deletions
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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 &);
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue