Skip to content

Commit

Permalink
Move last_telemetry_req to bootstrap_server
Browse files Browse the repository at this point in the history
  • Loading branch information
wezrule committed Feb 10, 2020
1 parent defaf99 commit 68c739c
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 25 deletions.
16 changes: 4 additions & 12 deletions nano/node/bootstrap/bootstrap_server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -241,20 +241,12 @@ void nano::bootstrap_server::receive_header_action (boost::system::error_code co
{
if (is_realtime_connection ())
{
auto find_channel (node->network.tcp_channels.find_channel (remote_endpoint));
if (!find_channel)
{
find_channel = node->network.tcp_channels.find_node_id (remote_node_id);
}

// Only handle telemetry requests if they are outside of the cutoff time
auto is_very_first_message = find_channel->get_last_telemetry_req () == std::chrono::steady_clock::time_point{};
auto cache_exceeded = std::chrono::steady_clock::now () >= find_channel->get_last_telemetry_req () + nano::telemetry_cache_cutoffs::network_to_time (node->network_params.network);
if (find_channel && (is_very_first_message || cache_exceeded))
auto is_very_first_message = last_telemetry_req == std::chrono::steady_clock::time_point{};
auto cache_exceeded = std::chrono::steady_clock::now () >= last_telemetry_req + nano::telemetry_cache_cutoffs::network_to_time (node->network_params.network);
if (is_very_first_message || cache_exceeded)
{
node->network.tcp_channels.modify (find_channel, [](std::shared_ptr<nano::transport::channel_tcp> channel_a) {
channel_a->set_last_telemetry_req (std::chrono::steady_clock::now ());
});
last_telemetry_req = std::chrono::steady_clock::now ();
add_request (std::make_unique<nano::telemetry_req> (header));
}
}
Expand Down
1 change: 1 addition & 0 deletions nano/node/bootstrap/bootstrap_server.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -75,5 +75,6 @@ class bootstrap_server final : public std::enable_shared_from_this<nano::bootstr
// 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 };
std::chrono::steady_clock::time_point last_telemetry_req{ std::chrono::steady_clock::time_point () };
};
}
13 changes: 0 additions & 13 deletions nano/node/transport/transport.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -103,18 +103,6 @@ namespace transport
last_packet_sent = time_a;
}

std::chrono::steady_clock::time_point get_last_telemetry_req ()
{
nano::lock_guard<std::mutex> lk (channel_mutex);
return last_telemetry_req;
}

void set_last_telemetry_req (std::chrono::steady_clock::time_point const time_a)
{
nano::lock_guard<std::mutex> lk (channel_mutex);
last_telemetry_req = time_a;
}

boost::optional<nano::account> get_node_id_optional () const
{
nano::lock_guard<std::mutex> lk (channel_mutex);
Expand Down Expand Up @@ -156,7 +144,6 @@ namespace transport
std::chrono::steady_clock::time_point last_bootstrap_attempt{ std::chrono::steady_clock::time_point () };
std::chrono::steady_clock::time_point last_packet_received{ std::chrono::steady_clock::time_point () };
std::chrono::steady_clock::time_point last_packet_sent{ std::chrono::steady_clock::time_point () };
std::chrono::steady_clock::time_point last_telemetry_req{ std::chrono::steady_clock::time_point () };
boost::optional<nano::account> node_id{ boost::none };
std::atomic<uint8_t> network_version{ 0 };

Expand Down
13 changes: 13 additions & 0 deletions nano/node/transport/udp.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,22 @@ namespace transport
return nano::transport::transport_type::udp;
}

std::chrono::steady_clock::time_point get_last_telemetry_req ()
{
nano::lock_guard<std::mutex> lk (channel_mutex);
return last_telemetry_req;
}

void set_last_telemetry_req (std::chrono::steady_clock::time_point const time_a)
{
nano::lock_guard<std::mutex> lk (channel_mutex);
last_telemetry_req = time_a;
}

private:
nano::endpoint endpoint;
nano::transport::udp_channels & channels;
std::chrono::steady_clock::time_point last_telemetry_req{ std::chrono::steady_clock::time_point () };
};
class udp_channels final
{
Expand Down

0 comments on commit 68c739c

Please sign in to comment.