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