 9d9d377fce
			
		
	
	
	
	
	9d9d377fce* IPC 2.0 * Use nano::locked for confirmation subscriber vector * Remove unused local * Update toml tests, fix some const issues * Some access permission improvements * Comments and nano::locked improvements * Guilherme review feedback: formatting, advanced cmake flags, disallow deny for roles * Wesley feedback * Try to please win build on CI * Add generated file to git ignore * install api/flatbuffers/* depending on platform * correct path for api in MacOS app * add api to docker image Co-authored-by: Russel Waters <vaelstrom@gmail.com>
		
			
				
	
	
		
			49 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #pragma once
 | |
| 
 | |
| #include <nano/ipc_flatbuffers_lib/generated/flatbuffers/nanoapi_generated.h>
 | |
| #include <nano/lib/errors.hpp>
 | |
| #include <nano/lib/ipc.hpp>
 | |
| #include <nano/node/ipc/ipc_access_config.hpp>
 | |
| #include <nano/node/ipc/ipc_broker.hpp>
 | |
| #include <nano/node/node_rpc_config.hpp>
 | |
| 
 | |
| #include <atomic>
 | |
| #include <mutex>
 | |
| 
 | |
| namespace flatbuffers
 | |
| {
 | |
| class Parser;
 | |
| }
 | |
| namespace nano
 | |
| {
 | |
| class node;
 | |
| class error;
 | |
| namespace ipc
 | |
| {
 | |
| 	class access;
 | |
| 	/** The IPC server accepts connections on one or more configured transports */
 | |
| 	class ipc_server final
 | |
| 	{
 | |
| 	public:
 | |
| 		ipc_server (nano::node & node, nano::node_rpc_config const & node_rpc_config);
 | |
| 		~ipc_server ();
 | |
| 		void stop ();
 | |
| 
 | |
| 		nano::node & node;
 | |
| 		nano::node_rpc_config const & node_rpc_config;
 | |
| 
 | |
| 		/** Unique counter/id shared across sessions */
 | |
| 		std::atomic<uint64_t> id_dispenser{ 1 };
 | |
| 		nano::ipc::broker & get_broker ();
 | |
| 		nano::ipc::access & get_access ();
 | |
| 		nano::error reload_access_config ();
 | |
| 
 | |
| 	private:
 | |
| 		void setup_callbacks ();
 | |
| 		nano::ipc::broker broker;
 | |
| 		nano::ipc::access access;
 | |
| 		std::unique_ptr<dsock_file_remover> file_remover;
 | |
| 		std::vector<std::shared_ptr<nano::ipc::transport>> transports;
 | |
| 	};
 | |
| }
 | |
| }
 |