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 Input,
typename ReadDest>
30 std::declval<LocalType&>()))* enable =
nullptr)
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)
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 test::FooMessage &src, test::messages::FooMessage::Builder &&builder)
void CustomReadMessage(InvokeContext &invoke_context, const test::messages::FooMessage::Reader &reader, test::FooMessage &dest)
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...
bool CustomHasField(TypeList< CTransaction >, InvokeContext &invoke_context, const Input &input)
Interpret empty Data fields as null CTransactionRef values.
Function parameter type for prioritizing overloaded function calls that would otherwise be ambiguous.
Generic utility functions used by capnp code.