Bitcoin Core 29.99.0
P2P Digital Currency
Classes | Namespaces | Functions | Variables
proxy-types.h File Reference
#include <mp/proxy-io.h>
#include <exception>
#include <optional>
#include <set>
#include <typeindex>
#include <vector>
Include dependency graph for proxy-types.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  mp::ValueField< Value >
 
struct  mp::StructField< Accessor, Struct >
 
struct  mp::ReadDestEmplace< LocalType, EmplaceFn >
 
struct  mp::ReadDestUpdate< Value >
 Destination parameter type that can be passed to ReadField function as an alternative to ReadDestEmplace. More...
 
struct  mp::ListOutput<::capnp::List< T, kind > >
 
struct  mp::IterateFieldsHelper< Derived, N >
 
struct  mp::IterateFields
 
struct  mp::ClientException< Exception, Accessor >
 
struct  mp::ClientException< Exception, Accessor >::BuildParams
 
struct  mp::ClientException< Exception, Accessor >::ReadResults
 
struct  mp::ClientParam< Accessor, Types >
 
struct  mp::ClientParam< Accessor, Types >::BuildParams
 
struct  mp::ClientParam< Accessor, Types >::ReadResults
 
struct  mp::ServerCall
 
struct  mp::ServerDestroy
 
struct  mp::ServerRet< Accessor, Parent >
 
struct  mp::ServerExcept< Exception, Accessor, Parent >
 
struct  mp::ServerField< argc, Accessor, Parent >
 
struct  mp::CapRequestTraits<::capnp::Request< _Params, _Results > >
 
struct  mp::ProxyTypeRegister
 Map to convert client interface pointers to ProxyContext struct references at runtime using typeids. More...
 

Namespaces

namespace  mp
 Functions to serialize / deserialize common bitcoin types.
 

Functions

template<typename LocalType >
auto mp::ReadDestTemp ()
 Helper function to create a ReadDestEmplace object that constructs a temporary, ReadField can return. More...
 
template<typename... LocalTypes, typename... Args>
decltype(auto) mp::ReadField (TypeList< LocalTypes... >, Args &&... args)
 
template<typename LocalType , typename Input >
void mp::ThrowField (TypeList< LocalType >, InvokeContext &invoke_context, Input &&input)
 
template<typename Input >
void mp::ThrowField (TypeList< std::exception >, InvokeContext &invoke_context, Input &&input)
 Special case for generic std::exception. More...
 
template<typename... Values>
bool mp::CustomHasValue (InvokeContext &invoke_context, Values &&... value)
 
template<typename... LocalTypes, typename Context , typename... Values, typename Output >
void mp::BuildField (TypeList< LocalTypes... >, Context &context, Output &&output, Values &&... values)
 
template<typename LocalType , typename Value , typename Output >
void mp::CustomBuildField (TypeList< LocalType >, Priority< 0 >, InvokeContext &invoke_context, Value &&value, Output &&output)
 
template<typename Accessor , typename LocalType , typename ServerContext , typename Fn , typename... Args>
auto mp::PassField (Priority< 1 >, TypeList< LocalType & >, ServerContext &server_context, Fn &&fn, Args &&... args) -> Require< typename decltype(Accessor::get(server_context.call_context.getParams()))::Calls >
 PassField override for callable interface reference arguments. More...
 
template<typename... Args>
void mp::MaybeBuildField (std::true_type, Args &&... args)
 
template<typename... Args>
void mp::MaybeBuildField (std::false_type, Args &&...)
 
template<typename... Args>
void mp::MaybeReadField (std::true_type, Args &&... args)
 
template<typename... Args>
void mp::MaybeReadField (std::false_type, Args &&...)
 
template<typename LocalType , typename Value , typename Output >
void mp::MaybeSetWant (TypeList< LocalType * >, Priority< 1 >, Value &&value, Output &&output)
 
template<typename LocalTypes , typename... Args>
void mp::MaybeSetWant (LocalTypes, Priority< 0 >, Args &&...)
 
template<typename Accessor , typename LocalType , typename ServerContext , typename Fn , typename... Args>
void mp::PassField (Priority< 0 >, TypeList< LocalType >, ServerContext &server_context, Fn &&fn, Args &&... args)
 Default PassField implementation calling MaybeReadField/MaybeBuildField. More...
 
template<typename Accessor , typename ServerContext , typename Fn , typename... Args>
void mp::PassField (Priority< 0 >, TypeList<>, ServerContext &server_context, const Fn &fn, Args &&... args)
 Default PassField implementation for count(0) arguments, calling ReadField/BuildField. More...
 
template<typename Accessor , typename... Types>
ClientParam< Accessor, Types... > mp::MakeClientParam (Types &&... values)
 
template<typename Accessor , typename Message >
decltype(auto) mp::MaybeGet (Message &&message, decltype(Accessor::get(message)) *enable=nullptr)
 Helper for CustomPassField below. More...
 
template<typename Accessor >
::capnp::Void mp::MaybeGet (...)
 
template<class Accessor >
void mp::CustomPassField ()
 
template<typename Accessor , typename... Args>
auto mp::PassField (Priority< 2 >, Args &&... args) -> decltype(CustomPassField< Accessor >(std::forward< Args >(args)...))
 PassField override calling CustomPassField function, if it exists. More...
 
template<int argc, typename Accessor , typename Parent >
ServerField< argc, Accessor, Parent > mp::MakeServerField (Parent parent)
 
template<typename Client >
void mp::clientDestroy (Client &client)
 Entry point called by all generated ProxyClient destructors. More...
 
template<typename Server >
void mp::serverDestroy (Server &server)
 
template<typename ProxyClient , typename GetRequest , typename... FieldObjs>
void mp::clientInvoke (ProxyClient &proxy_client, const GetRequest &get_request, FieldObjs &&... fields)
 Entry point called by generated client code that looks like: More...
 
template<typename Fn , typename Ret >
auto mp::ReplaceVoid (Fn &&fn, Ret &&ret) -> std::enable_if_t< std::is_same_v< void, decltype(fn())>, decltype(ret())>
 Invoke callable fn() that may return void. More...
 
template<typename Server , typename CallContext , typename Fn >
kj::Promise< void > mp::serverInvoke (Server &server, CallContext &call_context, Fn fn)
 Entry point called by generated server code that looks like: More...
 

Variables

std::atomic< int > mp::server_reqs {0}