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;
78 template<
typename Interface>
79 void addCleanup(Interface& iface, std::function<
void()> cleanup)
81 addCleanup(
typeid(Interface), &iface, std::move(cleanup));
90 virtual void addCleanup(std::type_index type,
void* iface, std::function<
void()> cleanup) = 0;
94 std::unique_ptr<Ipc>
MakeIpc(
const char* exe_name,
const char* process_argv0,
Init&
init);
97 #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
Listen on a socket address exposing this process's init interface to clients.
virtual std::unique_ptr< Init > connectAddress(std::string &address)=0
Connect to a socket address and return a pointer to its Init interface.
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 void disconnectIncoming()=0
Disconnect any incoming connections that are still connected.
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.