dncurrency/nano/node/ipc/ipc_server.hpp
cryptocode 9d9d377fce
IPC 2.0 (#2487)
* 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>
2020-02-21 00:02:44 +01:00

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;
};
}
}