From 0f8bbf80a90cc5e662025cb75cce73ff2a9c7cf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Wo=CC=81jcik?= <3044353+pwojcikdev@users.noreply.github.com> Date: Sun, 17 Nov 2024 00:41:35 +0100 Subject: [PATCH] Make send_buffer protected --- nano/core_test/node.cpp | 7 +------ nano/node/transport/channel.hpp | 16 +++++++--------- nano/node/transport/fake.hpp | 13 +++++++------ nano/node/transport/inproc.hpp | 6 +++--- nano/node/transport/tcp_channel.hpp | 13 +++++++------ 5 files changed, 25 insertions(+), 30 deletions(-) diff --git a/nano/core_test/node.cpp b/nano/core_test/node.cpp index e635d8c46..e754474f4 100644 --- a/nano/core_test/node.cpp +++ b/nano/core_test/node.cpp @@ -1005,14 +1005,9 @@ TEST (node, fork_no_vote_quorum) ASSERT_FALSE (system.wallet (1)->store.fetch (transaction, key1, key3)); auto vote = std::make_shared (key1, key3, 0, 0, std::vector{ send2->hash () }); nano::confirm_ack confirm{ nano::dev::network_params.network, vote }; - std::vector buffer; - { - nano::vectorstream stream (buffer); - confirm.serialize (stream); - } auto channel = node2.network.find_node_id (node3.node_id.pub); ASSERT_NE (nullptr, channel); - channel->send_buffer (nano::shared_const_buffer (std::move (buffer))); + channel->send (confirm); ASSERT_TIMELY (10s, node3.stats.count (nano::stat::type::message, nano::stat::detail::confirm_ack, nano::stat::dir::in) >= 3); ASSERT_EQ (node1.latest (nano::dev::genesis_key.pub), send1->hash ()); ASSERT_EQ (node2.latest (nano::dev::genesis_key.pub), send1->hash ()); diff --git a/nano/node/transport/channel.hpp b/nano/node/transport/channel.hpp index 622c01f6a..f2d2f8706 100644 --- a/nano/node/transport/channel.hpp +++ b/nano/node/transport/channel.hpp @@ -35,15 +35,6 @@ public: nano::transport::buffer_drop_policy policy = nano::transport::buffer_drop_policy::limiter, nano::transport::traffic_type = nano::transport::traffic_type::generic); - /// Implements the actual send operation - /// @returns true if the message was sent (or queued to be sent), false if it was immediately dropped - // TODO: Make this private, do not allow external direct calls - virtual bool send_buffer (nano::shared_const_buffer const &, - callback_t const & callback = nullptr, - nano::transport::buffer_drop_policy = nano::transport::buffer_drop_policy::limiter, - nano::transport::traffic_type = nano::transport::traffic_type::generic) - = 0; - virtual void close () = 0; virtual nano::endpoint get_remote_endpoint () const = 0; @@ -131,6 +122,13 @@ public: std::shared_ptr owner () const; +protected: + virtual bool send_buffer (nano::shared_const_buffer const &, + callback_t const & callback = nullptr, + nano::transport::buffer_drop_policy = nano::transport::buffer_drop_policy::limiter, + nano::transport::traffic_type = nano::transport::traffic_type::generic) + = 0; + protected: nano::node & node; mutable nano::mutex mutex; diff --git a/nano/node/transport/fake.hpp b/nano/node/transport/fake.hpp index 1d9d0e1b5..872fa0555 100644 --- a/nano/node/transport/fake.hpp +++ b/nano/node/transport/fake.hpp @@ -19,12 +19,6 @@ namespace transport std::string to_string () const override; - bool send_buffer ( - nano::shared_const_buffer const &, - std::function const & = nullptr, - nano::transport::buffer_drop_policy = nano::transport::buffer_drop_policy::limiter, - nano::transport::traffic_type = nano::transport::traffic_type::generic) override; - void set_endpoint (nano::endpoint const & endpoint_a) { endpoint = endpoint_a; @@ -55,6 +49,13 @@ namespace transport return !closed; } + protected: + bool send_buffer ( + nano::shared_const_buffer const &, + std::function const & = nullptr, + nano::transport::buffer_drop_policy = nano::transport::buffer_drop_policy::limiter, + nano::transport::traffic_type = nano::transport::traffic_type::generic) override; + private: nano::endpoint endpoint; diff --git a/nano/node/transport/inproc.hpp b/nano/node/transport/inproc.hpp index fcd5006f4..0f280c515 100644 --- a/nano/node/transport/inproc.hpp +++ b/nano/node/transport/inproc.hpp @@ -17,9 +17,6 @@ namespace transport public: explicit channel (nano::node & node, nano::node & destination); - // TODO: investigate clang-tidy warning about default parameters on virtual/override functions - bool send_buffer (nano::shared_const_buffer const &, std::function const & = nullptr, nano::transport::buffer_drop_policy = nano::transport::buffer_drop_policy::limiter, nano::transport::traffic_type = nano::transport::traffic_type::generic) override; - std::string to_string () const override; nano::endpoint get_remote_endpoint () const override @@ -42,6 +39,9 @@ namespace transport // Can't be closed } + protected: + bool send_buffer (nano::shared_const_buffer const &, std::function const & = nullptr, nano::transport::buffer_drop_policy = nano::transport::buffer_drop_policy::limiter, nano::transport::traffic_type = nano::transport::traffic_type::generic) override; + private: nano::node & destination; nano::endpoint const endpoint; diff --git a/nano/node/transport/tcp_channel.hpp b/nano/node/transport/tcp_channel.hpp index 082f73741..094ea189e 100644 --- a/nano/node/transport/tcp_channel.hpp +++ b/nano/node/transport/tcp_channel.hpp @@ -50,12 +50,6 @@ public: void close () override; - bool send_buffer (nano::shared_const_buffer const &, - nano::transport::channel::callback_t const & callback = nullptr, - nano::transport::buffer_drop_policy = nano::transport::buffer_drop_policy::limiter, - nano::transport::traffic_type = nano::transport::traffic_type::generic) - override; - bool max (nano::transport::traffic_type traffic_type) override; bool alive () const override; @@ -69,6 +63,13 @@ public: std::string to_string () const override; +protected: + bool send_buffer (nano::shared_const_buffer const &, + nano::transport::channel::callback_t const & callback = nullptr, + nano::transport::buffer_drop_policy = nano::transport::buffer_drop_policy::limiter, + nano::transport::traffic_type = nano::transport::traffic_type::generic) + override; + private: void start (); void stop ();