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)
40 return Accessor::init(message);
43template <
typename Accessor>
53template <
typename Accessor,
typename... LocalTypes,
typename ServerContext,
typename Fn,
typename... Args>
60 [&](LocalTypes... param) { fn.invoke(server_context, std::forward<Args>(args)..., param...); });
Functions to serialize / deserialize common bitcoin types.
bool CustomHasField(TypeList< LocalTypes... >, InvokeContext &invoke_context, const Input &input)
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)
decltype(auto) CustomReadField(TypeList< LocalType >, Priority< 1 >, InvokeContext &invoke_context, Input &&input, ReadDest &&read_dest)
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)
decltype(auto) MaybeGet(Message &&message, decltype(Accessor::get(message)) *enable=nullptr)
ServerInvokeContext< ProxyServer< Interface >, ::capnp::CallContext< Params, Results > > ServerContext
void CustomBuildField(TypeList< LocalType >, Priority< 1 >, InvokeContext &invoke_context, Value &&value, Output &&output)
Generic utility functions used by capnp code.