Test channel
This commit is contained in:
parent
7b9aad9c96
commit
afbf4b1a2d
6 changed files with 87 additions and 0 deletions
|
|
@ -46,6 +46,12 @@ public:
|
||||||
return observers.size ();
|
return observers.size ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void clear ()
|
||||||
|
{
|
||||||
|
nano::lock_guard<nano::mutex> lock{ mutex };
|
||||||
|
observers.clear ();
|
||||||
|
}
|
||||||
|
|
||||||
nano::container_info container_info () const
|
nano::container_info container_info () const
|
||||||
{
|
{
|
||||||
nano::unique_lock<nano::mutex> lock{ mutex };
|
nano::unique_lock<nano::mutex> lock{ mutex };
|
||||||
|
|
|
||||||
|
|
@ -174,6 +174,8 @@ add_library(
|
||||||
transport/tcp_server.cpp
|
transport/tcp_server.cpp
|
||||||
transport/tcp_socket.hpp
|
transport/tcp_socket.hpp
|
||||||
transport/tcp_socket.cpp
|
transport/tcp_socket.cpp
|
||||||
|
transport/test_channel.hpp
|
||||||
|
transport/test_channel.cpp
|
||||||
transport/traffic_type.hpp
|
transport/traffic_type.hpp
|
||||||
transport/traffic_type.cpp
|
transport/traffic_type.cpp
|
||||||
transport/transport.hpp
|
transport/transport.hpp
|
||||||
|
|
|
||||||
19
nano/node/transport/test_channel.cpp
Normal file
19
nano/node/transport/test_channel.cpp
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
#include <nano/node/node.hpp>
|
||||||
|
#include <nano/node/transport/test_channel.hpp>
|
||||||
|
|
||||||
|
nano::transport::test_channel::test_channel (nano::node & node_a) :
|
||||||
|
channel (node_a)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool nano::transport::test_channel::send_impl (nano::message const & message, nano::transport::traffic_type traffic_type, callback_t callback)
|
||||||
|
{
|
||||||
|
observers.notify (message, traffic_type);
|
||||||
|
|
||||||
|
if (callback)
|
||||||
|
{
|
||||||
|
callback (boost::system::errc::make_error_code (boost::system::errc::success), message.to_shared_const_buffer ().size ());
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
45
nano/node/transport/test_channel.hpp
Normal file
45
nano/node/transport/test_channel.hpp
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <nano/lib/observer_set.hpp>
|
||||||
|
#include <nano/node/transport/channel.hpp>
|
||||||
|
#include <nano/node/transport/fwd.hpp>
|
||||||
|
|
||||||
|
namespace nano::transport
|
||||||
|
{
|
||||||
|
class test_channel final : public nano::transport::channel
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
nano::observer_set<nano::message, nano::transport::traffic_type> observers; // Called for each queued message
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit test_channel (nano::node &);
|
||||||
|
|
||||||
|
nano::endpoint get_remote_endpoint () const override
|
||||||
|
{
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
nano::endpoint get_local_endpoint () const override
|
||||||
|
{
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
nano::transport::transport_type get_type () const override
|
||||||
|
{
|
||||||
|
return nano::transport::transport_type::loopback;
|
||||||
|
}
|
||||||
|
|
||||||
|
void close () override
|
||||||
|
{
|
||||||
|
// Can't be closed
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string to_string () const override
|
||||||
|
{
|
||||||
|
return "test_channel";
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool send_impl (nano::message const &, nano::transport::traffic_type, callback_t) override;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -259,6 +259,16 @@ std::shared_ptr<nano::transport::fake::channel> nano::test::fake_channel (nano::
|
||||||
return channel;
|
return channel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<nano::transport::test_channel> nano::test::test_channel (nano::node & node, nano::account node_id)
|
||||||
|
{
|
||||||
|
auto channel = std::make_shared<nano::transport::test_channel> (node);
|
||||||
|
if (!node_id.is_zero ())
|
||||||
|
{
|
||||||
|
channel->set_node_id (node_id);
|
||||||
|
}
|
||||||
|
return channel;
|
||||||
|
}
|
||||||
|
|
||||||
std::shared_ptr<nano::election> nano::test::start_election (nano::test::system & system_a, nano::node & node_a, const nano::block_hash & hash_a)
|
std::shared_ptr<nano::election> nano::test::start_election (nano::test::system & system_a, nano::node & node_a, const nano::block_hash & hash_a)
|
||||||
{
|
{
|
||||||
system_a.deadline_set (5s);
|
system_a.deadline_set (5s);
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
#include <nano/lib/timer.hpp>
|
#include <nano/lib/timer.hpp>
|
||||||
#include <nano/node/fwd.hpp>
|
#include <nano/node/fwd.hpp>
|
||||||
#include <nano/node/transport/fwd.hpp>
|
#include <nano/node/transport/fwd.hpp>
|
||||||
|
#include <nano/node/transport/test_channel.hpp>
|
||||||
#include <nano/secure/account_info.hpp>
|
#include <nano/secure/account_info.hpp>
|
||||||
#include <nano/store/fwd.hpp>
|
#include <nano/store/fwd.hpp>
|
||||||
|
|
||||||
|
|
@ -385,6 +386,10 @@ namespace test
|
||||||
* Creates a new fake channel associated with `node`
|
* Creates a new fake channel associated with `node`
|
||||||
*/
|
*/
|
||||||
std::shared_ptr<nano::transport::fake::channel> fake_channel (nano::node & node, nano::account node_id = { 0 });
|
std::shared_ptr<nano::transport::fake::channel> fake_channel (nano::node & node, nano::account node_id = { 0 });
|
||||||
|
/*
|
||||||
|
* Creates a new test channel associated with `node`
|
||||||
|
*/
|
||||||
|
std::shared_ptr<nano::transport::test_channel> test_channel (nano::node & node, nano::account node_id = { 0 });
|
||||||
/*
|
/*
|
||||||
* Start an election on system system_a, node node_a and hash hash_a by reading the block
|
* Start an election on system system_a, node node_a and hash hash_a by reading the block
|
||||||
* out of the ledger and adding it to the manual election scheduler queue.
|
* out of the ledger and adding it to the manual election scheduler queue.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue