Bitcoin Core 31.0.0
P2P Digital Currency
Loading...
Searching...
No Matches
ipc.h
Go to the documentation of this file.
1// Copyright (c) 2021-present The Bitcoin Core developers
2// Distributed under the MIT software license, see the accompanying
3// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5#ifndef BITCOIN_INTERFACES_IPC_H
6#define BITCOIN_INTERFACES_IPC_H
7
8#include <functional>
9#include <memory>
10#include <typeindex>
11
12namespace ipc {
13struct Context;
14} // namespace ipc
15
16namespace interfaces {
17class Init;
18
49class Ipc
50{
51public:
52 virtual ~Ipc() = default;
53
55 virtual std::unique_ptr<Init> spawnProcess(const char* exe_name) = 0;
56
60 virtual bool startSpawnedProcess(int argc, char* argv[], int& exit_status) = 0;
61
67 virtual std::unique_ptr<Init> connectAddress(std::string& address) = 0;
68
71 virtual void listenAddress(std::string& address) = 0;
72
74 virtual void disconnectIncoming() = 0;
75
78 template<typename Interface>
79 void addCleanup(Interface& iface, std::function<void()> cleanup)
80 {
81 addCleanup(typeid(Interface), &iface, std::move(cleanup));
82 }
83
85 virtual ipc::Context& context() = 0;
86
87protected:
90 virtual void addCleanup(std::type_index type, void* iface, std::function<void()> cleanup) = 0;
91};
92
94std::unique_ptr<Ipc> MakeIpc(const char* exe_name, const char* process_argv0, Init& init);
95} // namespace interfaces
96
97#endif // BITCOIN_INTERFACES_IPC_H
int exit_status
Definition init.h:13
virtual ipc::Context & context()=0
IPC context struct accessor (see struct definition for more description).
virtual std::unique_ptr< Init > spawnProcess(const char *exe_name)=0
Spawn a child process returning pointer to its Init interface.
virtual void listenAddress(std::string &address)=0
virtual void disconnectIncoming()=0
Disconnect any incoming connections that are still connected.
virtual bool startSpawnedProcess(int argc, char *argv[], int &exit_status)=0
virtual ~Ipc()=default
virtual void addCleanup(std::type_index type, void *iface, std::function< void()> cleanup)=0
void addCleanup(Interface &iface, std::function< void()> cleanup)
Definition ipc.h:79
virtual std::unique_ptr< Init > connectAddress(std::string &address)=0
std::unique_ptr< Ipc > MakeIpc(const char *exe_name, const char *process_argv0, Init &init)
Return implementation of Ipc interface.
Definition ipc.h:12