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 ();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void clear ()
 | 
			
		||||
	{
 | 
			
		||||
		nano::lock_guard<nano::mutex> lock{ mutex };
 | 
			
		||||
		observers.clear ();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	nano::container_info container_info () const
 | 
			
		||||
	{
 | 
			
		||||
		nano::unique_lock<nano::mutex> lock{ mutex };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -174,6 +174,8 @@ add_library(
 | 
			
		|||
  transport/tcp_server.cpp
 | 
			
		||||
  transport/tcp_socket.hpp
 | 
			
		||||
  transport/tcp_socket.cpp
 | 
			
		||||
  transport/test_channel.hpp
 | 
			
		||||
  transport/test_channel.cpp
 | 
			
		||||
  transport/traffic_type.hpp
 | 
			
		||||
  transport/traffic_type.cpp
 | 
			
		||||
  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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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)
 | 
			
		||||
{
 | 
			
		||||
	system_a.deadline_set (5s);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,6 +4,7 @@
 | 
			
		|||
#include <nano/lib/timer.hpp>
 | 
			
		||||
#include <nano/node/fwd.hpp>
 | 
			
		||||
#include <nano/node/transport/fwd.hpp>
 | 
			
		||||
#include <nano/node/transport/test_channel.hpp>
 | 
			
		||||
#include <nano/secure/account_info.hpp>
 | 
			
		||||
#include <nano/store/fwd.hpp>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -385,6 +386,10 @@ namespace test
 | 
			
		|||
	 * 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 });
 | 
			
		||||
	/*
 | 
			
		||||
	 * 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
 | 
			
		||||
	 * out of the ledger and adding it to the manual election scheduler queue.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue