Bitcoin Core
31.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
ipc
libmultiprocess
include
mp
type-message.h
Go to the documentation of this file.
1
// Copyright (c) The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#ifndef MP_PROXY_TYPE_MESSAGE_H
6
#define MP_PROXY_TYPE_MESSAGE_H
7
8
#include <
mp/util.h
>
9
10
namespace
mp
{
15
template
<
typename
LocalType,
typename
Value,
typename
Output>
16
void
CustomBuildField
(
TypeList<LocalType>
,
Priority<2>
,
InvokeContext
& invoke_context, Value&& value, Output&& output,
17
decltype
(
CustomBuildMessage
(invoke_context, value, std::move(output.get())))* enable =
nullptr
)
18
{
19
CustomBuildMessage
(invoke_context, value, std::move(output.init()));
20
}
21
26
template
<
typename
LocalType,
typename
Input,
typename
ReadDest>
27
decltype
(
auto
)
CustomReadField
(
TypeList<LocalType>
,
Priority<2>
,
InvokeContext
& invoke_context, Input&& input,
28
ReadDest&& read_dest,
29
decltype
(
CustomReadMessage
(invoke_context, input.get(),
30
std::declval<LocalType&>()))* enable =
nullptr
)
31
{
32
return
read_dest.update([&](
auto
& value) {
if
(
CustomHasField
(
TypeList<LocalType>
(), invoke_context, input))
CustomReadMessage
(invoke_context, input.get(), value); });
33
}
34
37
template
<
typename
Accessor,
typename
Message>
38
decltype
(
auto
)
MaybeInit
(Message&& message,
decltype
(Accessor::get(message))* enable =
nullptr
)
39
{
40
return
Accessor::init(message);
41
}
42
43
template
<
typename
Accessor>
44
::capnp::Void
MaybeInit
(...)
45
{
46
return
{};
47
}
48
53
template
<
typename
Accessor,
typename
... LocalTypes,
typename
ServerContext
,
typename
Fn,
typename
... Args>
54
auto
CustomPassField
(
TypeList<LocalTypes...>
,
ServerContext
& server_context, Fn&& fn, Args&&...
args
)
55
->
decltype
(
CustomPassMessage
(server_context,
MaybeGet<Accessor>
(server_context.call_context.getParams()),
56
MaybeGet<Accessor>
(server_context.call_context.getResults()),
nullptr
))
57
{
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...); });
61
}
62
}
// namespace mp
63
64
#endif
// MP_PROXY_TYPE_MESSAGE_H
args
ArgsManager & args
Definition
bitcoind.cpp:277
util.h
mp
Functions to serialize / deserialize common bitcoin types.
Definition
common-types.h:57
mp::CustomHasField
bool CustomHasField(TypeList< LocalTypes... >, InvokeContext &invoke_context, const Input &input)
Definition
proxy-types.h:207
mp::CustomPassField
void CustomPassField()
mp::CustomPassMessage
void CustomPassMessage(InvokeContext &invoke_context, const test::messages::FooMutable::Reader &reader, test::messages::FooMutable::Builder builder, std::function< void(test::FooMutable &)> &&fn)
Definition
foo-types.h:97
mp::MaybeInit
decltype(auto) MaybeInit(Message &&message, decltype(Accessor::get(message)) *enable=nullptr)
Definition
type-message.h:38
mp::CustomReadField
decltype(auto) CustomReadField(TypeList< LocalType >, Priority< 1 >, InvokeContext &invoke_context, Input &&input, ReadDest &&read_dest)
Definition
common-types.h:83
mp::CustomBuildMessage
void CustomBuildMessage(InvokeContext &invoke_context, const test::FooMessage &src, test::messages::FooMessage::Builder &&builder)
Definition
foo-types.h:69
mp::CustomReadMessage
void CustomReadMessage(InvokeContext &invoke_context, const test::messages::FooMessage::Reader &reader, test::FooMessage &dest)
Definition
foo-types.h:76
mp::MaybeGet
decltype(auto) MaybeGet(Message &&message, decltype(Accessor::get(message)) *enable=nullptr)
Definition
proxy-types.h:576
mp::ServerContext
ServerInvokeContext< ProxyServer< Interface >, ::capnp::CallContext< Params, Results > > ServerContext
Definition
proxy-io.h:72
mp::CustomBuildField
void CustomBuildField(TypeList< LocalType >, Priority< 1 >, InvokeContext &invoke_context, Value &&value, Output &&output)
Definition
common-types.h:63
mp::InvokeContext
Definition
proxy-io.h:30
mp::Priority
Definition
util.h:109
mp::TypeList
Generic utility functions used by capnp code.
Definition
util.h:33
Generated on
for Bitcoin Core by
1.17.0