5 #ifndef BITCOIN_INTERFACES_IPC_H 6 #define BITCOIN_INTERFACES_IPC_H 52 virtual ~Ipc() =
default;
55 virtual std::unique_ptr<Init>
spawnProcess(
const char* exe_name) = 0;
67 virtual std::unique_ptr<Init>
connectAddress(std::string& address) = 0;
75 template<
typename Interface>
76 void addCleanup(Interface& iface, std::function<
void()> cleanup)
78 addCleanup(
typeid(Interface), &iface, std::move(cleanup));
87 virtual void addCleanup(std::type_index type,
void* iface, std::function<
void()> cleanup) = 0;
91 std::unique_ptr<Ipc>
MakeIpc(
const char* exe_name,
const char* process_argv0, Init&
init);
94 #endif // BITCOIN_INTERFACES_IPC_H void addCleanup(Interface &iface, std::function< void()> cleanup)
Add cleanup callback to remote interface that will run when the interface is deleted.
Context struct used to give IPC protocol implementations or implementation hooks access to applicatio...
virtual void listenAddress(std::string &address)=0
Connect to a socket address and make a client interface proxy object using provided callback...
virtual std::unique_ptr< Init > connectAddress(std::string &address)=0
Connect to a socket address and make a client interface proxy object using provided callback...
virtual bool startSpawnedProcess(int argc, char *argv[], int &exit_status)=0
If this is a spawned process, block and handle requests from the parent process by forwarding them to...
std::unique_ptr< Ipc > MakeIpc(const char *exe_name, const char *process_argv0, Init &init)
Return implementation of Ipc interface.
virtual std::unique_ptr< Init > spawnProcess(const char *exe_name)=0
Spawn a child process returning pointer to its Init interface.
virtual ipc::Context & context()=0
IPC context struct accessor (see struct definition for more description).
Interface providing access to interprocess-communication (IPC) functionality.