mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-04-30 00:38:12 +02:00
multiprocess: Add unit tests for connect, serve, and listen functions
This commit is contained in:
@@ -61,11 +61,12 @@ public:
|
||||
}
|
||||
mp::ListenConnections<messages::Init>(*m_loop, listen_fd, init);
|
||||
}
|
||||
void serve(int fd, const char* exe_name, interfaces::Init& init) override
|
||||
void serve(int fd, const char* exe_name, interfaces::Init& init, const std::function<void()>& ready_fn = {}) override
|
||||
{
|
||||
assert(!m_loop);
|
||||
mp::g_thread_context.thread_name = mp::ThreadName(exe_name);
|
||||
m_loop.emplace(exe_name, &IpcLogFn, &m_context);
|
||||
if (ready_fn) ready_fn();
|
||||
mp::ServeStream<messages::Init>(*m_loop, fd, init);
|
||||
m_loop->loop();
|
||||
m_loop.reset();
|
||||
|
||||
@@ -50,7 +50,13 @@ public:
|
||||
//! created by them. This isn't really a problem because serve() is only
|
||||
//! called by spawned child processes that call it immediately to
|
||||
//! communicate back with parent processes.
|
||||
virtual void serve(int fd, const char* exe_name, interfaces::Init& init) = 0;
|
||||
//
|
||||
//! The optional `ready_fn` callback will be called after the event loop is
|
||||
//! created but before it is started. This can be useful in tests to trigger
|
||||
//! client connections from another thread as soon as the event loop is
|
||||
//! available, but should not be neccessary in normal code which starts
|
||||
//! clients and servers independently.
|
||||
virtual void serve(int fd, const char* exe_name, interfaces::Init& init, const std::function<void()>& ready_fn = {}) = 0;
|
||||
|
||||
//! Add cleanup callback to interface that will run when the interface is
|
||||
//! deleted.
|
||||
|
||||
Reference in New Issue
Block a user