5#ifndef MP_PROXY_TYPE_MESSAGE_H
6#define MP_PROXY_TYPE_MESSAGE_H
15template <
typename LocalType,
typename Value,
typename Output>
17 decltype(
CustomBuildMessage(invoke_context, value, std::move(output.get())))* enable =
nullptr)
26template <
typename LocalType,
typename Reader,
typename ReadDest>
30 std::declval<LocalType&>()))* enable =
nullptr)
32 return read_dest.update([&](
auto& value) {
if (reader.has())
CustomReadMessage(invoke_context, reader.get(), value); });
37template <
typename Accessor,
typename Message>
38decltype(
auto)
MaybeInit(Message&& message,
decltype(Accessor::get(message))* enable =
nullptr)
43template <
typename Accessor>
53template <
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...); });
std::unique_ptr< interfaces::Init > init
Functions to serialize / deserialize common bitcoin types.
void CustomPassMessage(InvokeContext &invoke_context, const test::messages::FooMutable::Reader &reader, test::messages::FooMutable::Builder builder, std::function< void(test::FooMutable &)> &&fn)
void CustomReadMessage(InvokeContext &invoke_context, const ipc::capnp::messages::BlockValidationState::Reader &reader, BlockValidationState &dest)
decltype(auto) MaybeInit(Message &&message, decltype(Accessor::get(message)) *enable=nullptr)
Helper for CustomPassField below.
decltype(auto) CustomReadField(TypeList< LocalType >, Priority< 1 >, InvokeContext &invoke_context, Input &&input, ReadDest &&read_dest)
Overload multiprocess library's CustomReadField hook to allow any object with an Unserialize method t...
ServerInvokeContext< ProxyServer< Interface >, ::capnp::CallContext< Params, Results > > ServerContext
void CustomBuildMessage(InvokeContext &invoke_context, const BlockValidationState &src, ipc::capnp::messages::BlockValidationState::Builder &&builder)
void CustomBuildField(TypeList< LocalType >, Priority< 1 >, InvokeContext &invoke_context, Value &&value, Output &&output)
Overload multiprocess library's CustomBuildField hook to allow any serializable object to be stored i...
Function parameter type for prioritizing overloaded function calls that would otherwise be ambiguous.
Generic utility functions used by capnp code.