5 #ifndef MP_PROXY_TYPE_MESSAGE_H 6 #define MP_PROXY_TYPE_MESSAGE_H 15 template <
typename LocalType,
typename Value,
typename Output>
17 decltype(
CustomBuildMessage(invoke_context, value, std::move(output.get())))* enable =
nullptr)
26 template <
typename LocalType,
typename Input,
typename ReadDest>
30 std::declval<LocalType&>()))* enable =
nullptr)
37 template <
typename Accessor,
typename Message>
38 decltype(
auto)
MaybeInit(Message&& message, decltype(
Accessor::get(message))* enable =
nullptr)
43 template <
typename Accessor>
53 template <
typename Accessor,
typename... LocalTypes,
typename ServerContext,
typename Fn,
typename... Args>
55 -> decltype(
CustomPassMessage(server_context, MaybeGet<Accessor>(server_context.call_context.getParams()),
56 MaybeGet<Accessor>(server_context.call_context.getResults()),
nullptr))
58 CustomPassMessage(server_context, MaybeGet<Accessor>(server_context.call_context.getParams()),
59 MaybeInit<Accessor>(server_context.call_context.getResults()),
60 [&](LocalTypes... param) { fn.invoke(server_context, std::forward<Args>(
args)..., param...); });
64 #endif // MP_PROXY_TYPE_MESSAGE_H void CustomBuildMessage(InvokeContext &invoke_context, const test::FooMessage &src, test::messages::FooMessage::Builder &&builder)
decltype(auto) MaybeInit(Message &&message, decltype(Accessor::get(message)) *enable=nullptr)
Helper for CustomPassField below.
void CustomPassMessage(InvokeContext &invoke_context, const test::messages::FooMutable::Reader &reader, test::messages::FooMutable::Builder builder, std::function< void(test::FooMutable &)> &&fn)
Function parameter type for prioritizing overloaded function calls that would otherwise be ambiguous...
bool CustomHasField(TypeList< LocalTypes... >, InvokeContext &invoke_context, const Input &input)
Return whether to read a C++ value from a Cap'n Proto field.
Accessor type holding flags that determine how to access a message field.
Generic utility functions used by capnp code.
Functions to serialize / deserialize common bitcoin types.
std::unique_ptr< interfaces::Init > init
ServerInvokeContext< ProxyServer< Interface >, ::capnp::CallContext< Params, Results > > ServerContext
decltype(auto) CustomReadField(TypeList< LocalType >, Priority< 1 >, InvokeContext &invoke_context, Input &&input, ReadDest &&read_dest) requires Unserializable< LocalType
Overload multiprocess library's CustomReadField hook to allow any object with an Unserialize method t...
void CustomBuildField(TypeList< LocalType >, Priority< 1 >, InvokeContext &invoke_context, Value &&value, Output &&output) requires Serializable< LocalType
Overload multiprocess library's CustomBuildField hook to allow any serializable object to be stored i...
void CustomReadMessage(InvokeContext &invoke_context, const test::messages::FooMessage::Reader &reader, test::FooMessage &dest)