![]() |
Bitcoin Core 31.99.0
P2P Digital Currency
|
Object holding network & rpc state associated with either an incoming server connection, or an outgoing client connection. More...
#include <proxy-io.h>
Classes | |
| struct | PoolSlot |
| A thread created by makePool with associated pending work queue. Vector is filled once by makePool() and never resized. More... | |
Public Member Functions | |
| Connection (EventLoop &loop, kj::Own< kj::AsyncIoStream > &&stream_) | |
| Connection (EventLoop &loop, kj::Own< kj::AsyncIoStream > &&stream_, const std::function<::capnp::Capability::Client(Connection &)> &make_client) | |
| ~Connection () | |
| Run cleanup functions. More... | |
| CleanupIt | addSyncCleanup (std::function< void()> fn) |
| Register synchronous cleanup function to run on event loop thread (with access to capnp thread local variables) when disconnect() is called. More... | |
| void | removeSyncCleanup (CleanupIt it) |
| template<typename F > | |
| void | onDisconnect (F &&f) |
| Add disconnect handler. More... | |
Public Attributes | |
| EventLoopRef | m_loop |
| kj::Own< kj::AsyncIoStream > | m_stream |
| LoggingErrorHandler | m_error_handler {*m_loop} |
| kj::TaskSet | m_on_disconnect {m_error_handler} |
| TaskSet used to cancel the m_network.onDisconnect() handler for remote disconnections, if the connection is closed locally first by deleting this Connection object. More... | |
| ::capnp::TwoPartyVatNetwork | m_network |
| std::optional<::capnp::RpcSystem<::capnp::rpc::twoparty::VatId > > | m_rpc_system |
| ThreadMap::Client | m_thread_map {nullptr} |
| ::capnp::CapabilityServerSet< Thread > | m_threads |
| Collection of server-side IPC worker threads (ProxyServer<Thread> objects previously returned by ThreadMap.makeThread) used to service requests to clients. More... | |
| std::vector< PoolSlot > | m_thread_pool |
| kj::Canceler | m_canceler |
| Canceler for canceling promises that we want to discard when the connection is destroyed. More... | |
| CleanupList | m_sync_cleanup_fns |
| Cleanup functions to run if connection is broken unexpectedly. More... | |
Object holding network & rpc state associated with either an incoming server connection, or an outgoing client connection.
It must be created and destroyed on the event loop thread. In addition to Cap'n Proto state, it also holds lists of callbacks to run when the connection is closed.
Definition at line 435 of file proxy-io.h.
|
inline |
Definition at line 438 of file proxy-io.h.
|
inline |
Definition at line 442 of file proxy-io.h.
| mp::Connection::~Connection | ( | ) |
Run cleanup functions.
Must be called from the event loop thread. First calls synchronous cleanup functions while blocked (to free capnp Capability::Client handles owned by ProxyClient objects), then schedules asynchronous cleanup functions to run in a worker thread (to run destructors of m_impl instances owned by ProxyServer objects).
Definition at line 86 of file proxy.cpp.
| CleanupIt mp::Connection::addSyncCleanup | ( | std::function< void()> | fn | ) |
|
inline |
Add disconnect handler.
Definition at line 464 of file proxy-io.h.
| void mp::Connection::removeSyncCleanup | ( | CleanupIt | it | ) |
| kj::Canceler mp::Connection::m_canceler |
Canceler for canceling promises that we want to discard when the connection is destroyed.
This is used to interrupt method calls that are still executing at time of disconnection.
Definition at line 503 of file proxy-io.h.
| LoggingErrorHandler mp::Connection::m_error_handler {*m_loop} |
Definition at line 477 of file proxy-io.h.
| EventLoopRef mp::Connection::m_loop |
Definition at line 475 of file proxy-io.h.
| ::capnp::TwoPartyVatNetwork mp::Connection::m_network |
Definition at line 482 of file proxy-io.h.
| kj::TaskSet mp::Connection::m_on_disconnect {m_error_handler} |
TaskSet used to cancel the m_network.onDisconnect() handler for remote disconnections, if the connection is closed locally first by deleting this Connection object.
Definition at line 481 of file proxy-io.h.
| std::optional<::capnp::RpcSystem<::capnp::rpc::twoparty::VatId> > mp::Connection::m_rpc_system |
Definition at line 483 of file proxy-io.h.
| kj::Own<kj::AsyncIoStream> mp::Connection::m_stream |
Definition at line 476 of file proxy-io.h.
| CleanupList mp::Connection::m_sync_cleanup_fns |
Cleanup functions to run if connection is broken unexpectedly.
List will be empty if all ProxyClient are destroyed cleanly before the connection is destroyed.
Definition at line 508 of file proxy-io.h.
| ThreadMap::Client mp::Connection::m_thread_map {nullptr} |
Definition at line 487 of file proxy-io.h.
| std::vector<PoolSlot> mp::Connection::m_thread_pool |
Definition at line 498 of file proxy-io.h.
| ::capnp::CapabilityServerSet<Thread> mp::Connection::m_threads |
Collection of server-side IPC worker threads (ProxyServer<Thread> objects previously returned by ThreadMap.makeThread) used to service requests to clients.
Definition at line 491 of file proxy-io.h.