Bitcoin Core 29.99.0
P2P Digital Currency
Public Member Functions | Public Attributes | List of all members
mp::Connection Class Reference

Object holding network & rpc state associated with either an incoming server connection, or an outgoing client connection. More...

#include <proxy-io.h>

Collaboration diagram for mp::Connection:
[legend]

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}
 
::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...
 
CleanupList m_sync_cleanup_fns
 Cleanup functions to run if connection is broken unexpectedly. More...
 

Detailed Description

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 320 of file proxy-io.h.

Constructor & Destructor Documentation

◆ Connection() [1/2]

mp::Connection::Connection ( EventLoop loop,
kj::Own< kj::AsyncIoStream > &&  stream_ 
)
inline

Definition at line 323 of file proxy-io.h.

◆ Connection() [2/2]

mp::Connection::Connection ( EventLoop loop,
kj::Own< kj::AsyncIoStream > &&  stream_,
const std::function<::capnp::Capability::Client(Connection &)> &  make_client 
)
inline

Definition at line 327 of file proxy-io.h.

◆ ~Connection()

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 82 of file proxy.cpp.

Here is the call graph for this function:

Member Function Documentation

◆ addSyncCleanup()

CleanupIt mp::Connection::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.

any new i/o.

Definition at line 143 of file proxy.cpp.

Here is the caller graph for this function:

◆ onDisconnect()

template<typename F >
void mp::Connection::onDisconnect ( F &&  f)
inline

Add disconnect handler.

Definition at line 349 of file proxy-io.h.

Here is the caller graph for this function:

◆ removeSyncCleanup()

void mp::Connection::removeSyncCleanup ( CleanupIt  it)

Definition at line 157 of file proxy.cpp.

Here is the caller graph for this function:

Member Data Documentation

◆ m_error_handler

LoggingErrorHandler mp::Connection::m_error_handler {*m_loop}

Definition at line 362 of file proxy-io.h.

◆ m_loop

EventLoopRef mp::Connection::m_loop

Definition at line 360 of file proxy-io.h.

◆ m_network

::capnp::TwoPartyVatNetwork mp::Connection::m_network

Definition at line 364 of file proxy-io.h.

◆ m_on_disconnect

kj::TaskSet mp::Connection::m_on_disconnect {m_error_handler}

Definition at line 363 of file proxy-io.h.

◆ m_rpc_system

std::optional<::capnp::RpcSystem<::capnp::rpc::twoparty::VatId> > mp::Connection::m_rpc_system

Definition at line 365 of file proxy-io.h.

◆ m_stream

kj::Own<kj::AsyncIoStream> mp::Connection::m_stream

Definition at line 361 of file proxy-io.h.

◆ m_sync_cleanup_fns

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 378 of file proxy-io.h.

◆ m_thread_map

ThreadMap::Client mp::Connection::m_thread_map {nullptr}

Definition at line 369 of file proxy-io.h.

◆ m_threads

::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 373 of file proxy-io.h.


The documentation for this class was generated from the following files: