Bitcoin Core 31.0.0
P2P Digital Currency
Loading...
Searching...
No Matches
protocol.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_IPC_PROTOCOL_H
6#define BITCOIN_IPC_PROTOCOL_H
7
8#include <interfaces/init.h>
9
10#include <functional>
11#include <memory>
12#include <typeindex>
13
14namespace ipc {
15struct Context;
16
22{
23public:
24 virtual ~Protocol() = default;
25
35 virtual std::unique_ptr<interfaces::Init> connect(int fd, const char* exe_name) = 0;
36
40 virtual void listen(int listen_fd, const char* exe_name, interfaces::Init& init) = 0;
41
53 //
59 virtual void serve(int fd, const char* exe_name, interfaces::Init& init, const std::function<void()>& ready_fn = {}) = 0;
60
62 virtual void disconnectIncoming() = 0;
63
66 virtual void addCleanup(std::type_index type, void* iface, std::function<void()> cleanup) = 0;
67
69 virtual Context& context() = 0;
70};
71} // namespace ipc
72
73#endif // BITCOIN_IPC_PROTOCOL_H
virtual void disconnectIncoming()=0
Disconnect any incoming connections that are still connected.
virtual void addCleanup(std::type_index type, void *iface, std::function< void()> cleanup)=0
virtual void listen(int listen_fd, const char *exe_name, interfaces::Init &init)=0
virtual void serve(int fd, const char *exe_name, interfaces::Init &init, const std::function< void()> &ready_fn={})=0
virtual std::unique_ptr< interfaces::Init > connect(int fd, const char *exe_name)=0
virtual Context & context()=0
Context accessor.
virtual ~Protocol()=default
Definition ipc.h:12