Coverage Report

Created: 2026-09-02 14:16

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/tmp/bitcoin/src/ipc/capnp/common-types.h
Line
Count
Source
1
// Copyright (c) 2023-present 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 BITCOIN_IPC_CAPNP_COMMON_TYPES_H
6
#define BITCOIN_IPC_CAPNP_COMMON_TYPES_H
7
8
#include <clientversion.h>
9
#include <interfaces/types.h>
10
#include <primitives/transaction.h>
11
#include <serialize.h>
12
#include <streams.h>
13
#include <univalue.h>
14
15
#include <cstddef>
16
#include <mp/proxy-types.h>
17
#include <mp/type-chrono.h>
18
#include <mp/type-context.h>
19
#include <mp/type-data.h>
20
#include <mp/type-decay.h>
21
#include <mp/type-interface.h>
22
#include <mp/type-message.h>
23
#include <mp/type-number.h>
24
#include <mp/type-optional.h>
25
#include <mp/type-pointer.h>
26
#include <mp/type-string.h>
27
#include <mp/type-struct.h>
28
#include <mp/type-threadmap.h>
29
#include <mp/type-vector.h>
30
#include <stdexcept>
31
#include <type_traits>
32
#include <utility>
33
34
namespace ipc {
35
namespace capnp {
36
//! Construct a ParamStream wrapping a data stream with serialization parameters
37
//! needed to pass transaction objects between bitcoin processes.
38
//! In the future, more params may be added here to serialize other objects that
39
//! require serialization parameters. Params should just be chosen to serialize
40
//! objects completely and ensure that serializing and deserializing objects
41
//! with the specified parameters produces equivalent objects. It's also
42
//! harmless to specify serialization parameters here that are not used.
43
template <typename S>
44
auto Wrap(S& s)
45
152
{
46
152
    return ParamsStream{s, TX_WITH_WITNESS};
47
152
}
auto ipc::capnp::Wrap<DataStream>(DataStream&)
Line
Count
Source
45
97
{
46
97
    return ParamsStream{s, TX_WITH_WITNESS};
47
97
}
auto ipc::capnp::Wrap<SpanReader>(SpanReader&)
Line
Count
Source
45
55
{
46
55
    return ParamsStream{s, TX_WITH_WITNESS};
47
55
}
48
49
//! Detect if type has a deserialize_type constructor, which is
50
//! used to deserialize types like CTransaction that can't be unserialized into
51
//! existing objects because they are immutable.
52
template <typename T>
53
concept Deserializable = std::is_constructible_v<T, ::deserialize_type, ::DataStream&>;
54
} // namespace capnp
55
} // namespace ipc
56
57
//! Functions to serialize / deserialize common bitcoin types.
58
namespace mp {
59
//! Overload multiprocess library's CustomBuildField hook to allow any
60
//! serializable object to be stored in a capnproto Data field or passed to a
61
//! capnproto interface. Use Priority<1> so this hook has medium priority, and
62
//! higher priority hooks could take precedence over this one.
63
template <typename LocalType, typename Value, typename Output>
64
void CustomBuildField(TypeList<LocalType>, Priority<1>, InvokeContext& invoke_context, Value&& value, Output&& output)
65
// Enable if serializeable and if LocalType is not cv or reference qualified. If
66
// LocalType is cv or reference qualified, it is important to fall back to
67
// lower-priority Priority<0> implementation of this function that strips cv
68
// references, to prevent this CustomBuildField overload from taking precedence
69
// over more narrow overloads for specific LocalTypes.
70
requires Serializable<LocalType, DataStream> && std::is_same_v<LocalType, std::remove_cv_t<std::remove_reference_t<LocalType>>>
71
97
{
72
97
    DataStream stream;
73
97
    auto wrapper{ipc::capnp::Wrap(stream)};
74
97
    value.Serialize(wrapper);
75
97
    auto result = output.init(stream.size());
76
97
    memcpy(result.begin(), stream.data(), stream.size());
77
97
}
void mp::CustomBuildField<COutPoint, COutPoint, mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, capnp::Request<gen::FooInterface::PassOutPointParams, gen::FooInterface::PassOutPointResults>>>(mp::TypeList<COutPoint>, mp::Priority<1>, mp::InvokeContext&, COutPoint&&, mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, capnp::Request<gen::FooInterface::PassOutPointParams, gen::FooInterface::PassOutPointResults>>&&) requires Serializable<COutPoint, DataStream> && std::is_same_v<COutPoint, std::remove_cv<std::remove_reference<COutPoint>::type>::type>
Line
Count
Source
71
1
{
72
1
    DataStream stream;
73
1
    auto wrapper{ipc::capnp::Wrap(stream)};
74
1
    value.Serialize(wrapper);
75
1
    auto result = output.init(stream.size());
76
1
    memcpy(result.begin(), stream.data(), stream.size());
77
1
}
void mp::CustomBuildField<CTransaction, CTransaction const&, mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, capnp::Request<gen::FooInterface::PassTransactionParams, gen::FooInterface::PassTransactionResults>>&>(mp::TypeList<CTransaction>, mp::Priority<1>, mp::InvokeContext&, CTransaction const&, mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, capnp::Request<gen::FooInterface::PassTransactionParams, gen::FooInterface::PassTransactionResults>>&) requires Serializable<CTransaction, DataStream> && std::is_same_v<CTransaction, std::remove_cv<std::remove_reference<CTransaction>::type>::type>
Line
Count
Source
71
1
{
72
1
    DataStream stream;
73
1
    auto wrapper{ipc::capnp::Wrap(stream)};
74
1
    value.Serialize(wrapper);
75
1
    auto result = output.init(stream.size());
76
1
    memcpy(result.begin(), stream.data(), stream.size());
77
1
}
void mp::CustomBuildField<CTransaction, CTransaction const&, mp::ListOutput<capnp::List<capnp::Data, (capnp::Kind)1>>&>(mp::TypeList<CTransaction>, mp::Priority<1>, mp::InvokeContext&, CTransaction const&, mp::ListOutput<capnp::List<capnp::Data, (capnp::Kind)1>>&) requires Serializable<CTransaction, DataStream> && std::is_same_v<CTransaction, std::remove_cv<std::remove_reference<CTransaction>::type>::type>
Line
Count
Source
71
6
{
72
6
    DataStream stream;
73
6
    auto wrapper{ipc::capnp::Wrap(stream)};
74
6
    value.Serialize(wrapper);
75
6
    auto result = output.init(stream.size());
76
6
    memcpy(result.begin(), stream.data(), stream.size());
77
6
}
void mp::CustomBuildField<COutPoint, COutPoint, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, gen::FooInterface::PassOutPointResults::Builder>&>(mp::TypeList<COutPoint>, mp::Priority<1>, mp::InvokeContext&, COutPoint&&, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, gen::FooInterface::PassOutPointResults::Builder>&) requires Serializable<COutPoint, DataStream> && std::is_same_v<COutPoint, std::remove_cv<std::remove_reference<COutPoint>::type>::type>
Line
Count
Source
71
1
{
72
1
    DataStream stream;
73
1
    auto wrapper{ipc::capnp::Wrap(stream)};
74
1
    value.Serialize(wrapper);
75
1
    auto result = output.init(stream.size());
76
1
    memcpy(result.begin(), stream.data(), stream.size());
77
1
}
void mp::CustomBuildField<CTransaction, CTransaction const&, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, gen::FooInterface::PassTransactionResults::Builder>&>(mp::TypeList<CTransaction>, mp::Priority<1>, mp::InvokeContext&, CTransaction const&, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, gen::FooInterface::PassTransactionResults::Builder>&) requires Serializable<CTransaction, DataStream> && std::is_same_v<CTransaction, std::remove_cv<std::remove_reference<CTransaction>::type>::type>
Line
Count
Source
71
1
{
72
1
    DataStream stream;
73
1
    auto wrapper{ipc::capnp::Wrap(stream)};
74
1
    value.Serialize(wrapper);
75
1
    auto result = output.init(stream.size());
76
1
    memcpy(result.begin(), stream.data(), stream.size());
77
1
}
Unexecuted instantiation: void mp::CustomBuildField<uint256, uint256, mp::StructField<mp::Accessor<mp::mining_fields::CurrentTip, 17>, capnp::Request<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>>>(mp::TypeList<uint256>, mp::Priority<1>, mp::InvokeContext&, uint256&&, mp::StructField<mp::Accessor<mp::mining_fields::CurrentTip, 17>, capnp::Request<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>>&&) requires Serializable<uint256, DataStream> && std::is_same_v<uint256, std::remove_cv<std::remove_reference<uint256>::type>::type>
Unexecuted instantiation: void mp::CustomBuildField<CBlock, CBlock const&, mp::StructField<mp::Accessor<mp::mining_fields::Block, 17>, capnp::Request<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>>&>(mp::TypeList<CBlock>, mp::Priority<1>, mp::InvokeContext&, CBlock const&, mp::StructField<mp::Accessor<mp::mining_fields::Block, 17>, capnp::Request<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>>&) requires Serializable<CBlock, DataStream> && std::is_same_v<CBlock, std::remove_cv<std::remove_reference<CBlock>::type>::type>
Unexecuted instantiation: void mp::CustomBuildField<CBlock, CBlock const&, mp::StructField<mp::Accessor<mp::mining_fields::Block, 17>, capnp::Request<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>>&>(mp::TypeList<CBlock>, mp::Priority<1>, mp::InvokeContext&, CBlock const&, mp::StructField<mp::Accessor<mp::mining_fields::Block, 17>, capnp::Request<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>>&) requires Serializable<CBlock, DataStream> && std::is_same_v<CBlock, std::remove_cv<std::remove_reference<CBlock>::type>::type>
Unexecuted instantiation: void mp::CustomBuildField<transaction_identifier<false>, transaction_identifier<false> const&, mp::ListOutput<capnp::List<capnp::Data, (capnp::Kind)1>>>(mp::TypeList<transaction_identifier<false>>, mp::Priority<1>, mp::InvokeContext&, transaction_identifier<false> const&, mp::ListOutput<capnp::List<capnp::Data, (capnp::Kind)1>>&&) requires Serializable<transaction_identifier<false>, DataStream> && std::is_same_v<transaction_identifier<false>, std::remove_cv<std::remove_reference<transaction_identifier<false>>::type>::type>
Unexecuted instantiation: void mp::CustomBuildField<transaction_identifier<true>, transaction_identifier<true> const&, mp::ListOutput<capnp::List<capnp::Data, (capnp::Kind)1>>>(mp::TypeList<transaction_identifier<true>>, mp::Priority<1>, mp::InvokeContext&, transaction_identifier<true> const&, mp::ListOutput<capnp::List<capnp::Data, (capnp::Kind)1>>&&) requires Serializable<transaction_identifier<true>, DataStream> && std::is_same_v<transaction_identifier<true>, std::remove_cv<std::remove_reference<transaction_identifier<true>>::type>::type>
Unexecuted instantiation: void mp::CustomBuildField<CTransaction, CTransaction const&, mp::StructField<mp::Accessor<mp::mining_fields::Coinbase, 17>, capnp::Request<ipc::capnp::messages::BlockTemplate::SubmitSolutionOld7Params, ipc::capnp::messages::BlockTemplate::SubmitSolutionOld7Results>>&>(mp::TypeList<CTransaction>, mp::Priority<1>, mp::InvokeContext&, CTransaction const&, mp::StructField<mp::Accessor<mp::mining_fields::Coinbase, 17>, capnp::Request<ipc::capnp::messages::BlockTemplate::SubmitSolutionOld7Params, ipc::capnp::messages::BlockTemplate::SubmitSolutionOld7Results>>&) requires Serializable<CTransaction, DataStream> && std::is_same_v<CTransaction, std::remove_cv<std::remove_reference<CTransaction>::type>::type>
Unexecuted instantiation: void mp::CustomBuildField<CTransaction, CTransaction const&, mp::StructField<mp::Accessor<mp::mining_fields::Coinbase, 17>, capnp::Request<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>>&>(mp::TypeList<CTransaction>, mp::Priority<1>, mp::InvokeContext&, CTransaction const&, mp::StructField<mp::Accessor<mp::mining_fields::Coinbase, 17>, capnp::Request<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>>&) requires Serializable<CTransaction, DataStream> && std::is_same_v<CTransaction, std::remove_cv<std::remove_reference<CTransaction>::type>::type>
void mp::CustomBuildField<uint256, uint256&, mp::StructField<mp::Accessor<mp::common_fields::Hash, 19>, ipc::capnp::messages::BlockRef::Builder>&>(mp::TypeList<uint256>, mp::Priority<1>, mp::InvokeContext&, uint256&, mp::StructField<mp::Accessor<mp::common_fields::Hash, 19>, ipc::capnp::messages::BlockRef::Builder>&) requires Serializable<uint256, DataStream> && std::is_same_v<uint256, std::remove_cv<std::remove_reference<uint256>::type>::type>
Line
Count
Source
71
4
{
72
4
    DataStream stream;
73
4
    auto wrapper{ipc::capnp::Wrap(stream)};
74
4
    value.Serialize(wrapper);
75
4
    auto result = output.init(stream.size());
76
4
    memcpy(result.begin(), stream.data(), stream.size());
77
4
}
void mp::CustomBuildField<CBlockHeader, CBlockHeader, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults::Builder>&>(mp::TypeList<CBlockHeader>, mp::Priority<1>, mp::InvokeContext&, CBlockHeader&&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults::Builder>&) requires Serializable<CBlockHeader, DataStream> && std::is_same_v<CBlockHeader, std::remove_cv<std::remove_reference<CBlockHeader>::type>::type>
Line
Count
Source
71
1
{
72
1
    DataStream stream;
73
1
    auto wrapper{ipc::capnp::Wrap(stream)};
74
1
    value.Serialize(wrapper);
75
1
    auto result = output.init(stream.size());
76
1
    memcpy(result.begin(), stream.data(), stream.size());
77
1
}
void mp::CustomBuildField<CBlock, CBlock, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, ipc::capnp::messages::BlockTemplate::GetBlockResults::Builder>&>(mp::TypeList<CBlock>, mp::Priority<1>, mp::InvokeContext&, CBlock&&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, ipc::capnp::messages::BlockTemplate::GetBlockResults::Builder>&) requires Serializable<CBlock, DataStream> && std::is_same_v<CBlock, std::remove_cv<std::remove_reference<CBlock>::type>::type>
Line
Count
Source
71
36
{
72
36
    DataStream stream;
73
36
    auto wrapper{ipc::capnp::Wrap(stream)};
74
36
    value.Serialize(wrapper);
75
36
    auto result = output.init(stream.size());
76
36
    memcpy(result.begin(), stream.data(), stream.size());
77
36
}
void mp::CustomBuildField<uint256, uint256&, mp::StructField<mp::Accessor<mp::mining_fields::Witness, 19>, ipc::capnp::messages::CoinbaseTx::Builder>&>(mp::TypeList<uint256>, mp::Priority<1>, mp::InvokeContext&, uint256&, mp::StructField<mp::Accessor<mp::mining_fields::Witness, 19>, ipc::capnp::messages::CoinbaseTx::Builder>&) requires Serializable<uint256, DataStream> && std::is_same_v<uint256, std::remove_cv<std::remove_reference<uint256>::type>::type>
Line
Count
Source
71
23
{
72
23
    DataStream stream;
73
23
    auto wrapper{ipc::capnp::Wrap(stream)};
74
23
    value.Serialize(wrapper);
75
23
    auto result = output.init(stream.size());
76
23
    memcpy(result.begin(), stream.data(), stream.size());
77
23
}
void mp::CustomBuildField<CTxOut, CTxOut const&, mp::ListOutput<capnp::List<capnp::Data, (capnp::Kind)1>>>(mp::TypeList<CTxOut>, mp::Priority<1>, mp::InvokeContext&, CTxOut const&, mp::ListOutput<capnp::List<capnp::Data, (capnp::Kind)1>>&&) requires Serializable<CTxOut, DataStream> && std::is_same_v<CTxOut, std::remove_cv<std::remove_reference<CTxOut>::type>::type>
Line
Count
Source
71
23
{
72
23
    DataStream stream;
73
23
    auto wrapper{ipc::capnp::Wrap(stream)};
74
23
    value.Serialize(wrapper);
75
23
    auto result = output.init(stream.size());
76
23
    memcpy(result.begin(), stream.data(), stream.size());
77
23
}
Unexecuted instantiation: void mp::CustomBuildField<uint256, uint256 const&, mp::ListOutput<capnp::List<capnp::Data, (capnp::Kind)1>>>(mp::TypeList<uint256>, mp::Priority<1>, mp::InvokeContext&, uint256 const&, mp::ListOutput<capnp::List<capnp::Data, (capnp::Kind)1>>&&) requires Serializable<uint256, DataStream> && std::is_same_v<uint256, std::remove_cv<std::remove_reference<uint256>::type>::type>
78
79
//! Overload multiprocess library's CustomReadField hook to allow any object
80
//! with an Unserialize method to be read from a capnproto Data field or
81
//! returned from capnproto interface. Use Priority<1> so this hook has medium
82
//! priority, and higher priority hooks could take precedence over this one.
83
template <typename LocalType, typename Input, typename ReadDest>
84
decltype(auto) CustomReadField(TypeList<LocalType>, Priority<1>, InvokeContext& invoke_context, Input&& input, ReadDest&& read_dest)
85
requires Unserializable<LocalType, DataStream> && (!ipc::capnp::Deserializable<LocalType>)
86
28
{
87
28
    return read_dest.update([&](auto& value) {
88
28
        if (!input.has()) return;
89
28
        auto data = input.get();
90
28
        SpanReader stream({data.begin(), data.end()});
91
28
        auto wrapper{ipc::capnp::Wrap(stream)};
92
28
        value.Unserialize(wrapper);
93
28
    });
auto decltype(auto) mp::CustomReadField<COutPoint, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassOutPointResults>>, mp::ReadDestUpdate<COutPoint>>(mp::TypeList<COutPoint>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassOutPointResults>>&&, mp::ReadDestUpdate<COutPoint>&&) requires Unserializable<COutPoint, DataStream> && !ipc::capnp::Deserializable<COutPoint>::'lambda'(COutPoint&)::operator()<COutPoint>(COutPoint&) const
Line
Count
Source
87
1
    return read_dest.update([&](auto& value) {
88
1
        if (!input.has()) return;
89
1
        auto data = input.get();
90
1
        SpanReader stream({data.begin(), data.end()});
91
1
        auto wrapper{ipc::capnp::Wrap(stream)};
92
1
        value.Unserialize(wrapper);
93
1
    });
auto decltype(auto) mp::CustomReadField<COutPoint, mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassOutPointParams::Reader const>, mp::ReadDestEmplace<COutPoint, void mp::PassField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, COutPoint, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassOutPointParams, gen::FooInterface::PassOutPointResults>>, mp::ServerRet<mp::Accessor<mp::ipc_test_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>>(mp::Priority<0>, mp::TypeList<COutPoint>, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassOutPointParams, gen::FooInterface::PassOutPointResults>>&, mp::ServerRet<mp::Accessor<mp::ipc_test_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>&&)::'lambda'(auto&&...)>>(mp::TypeList<COutPoint>, mp::Priority<1>, mp::InvokeContext&, COutPoint&&, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassOutPointParams, gen::FooInterface::PassOutPointResults>>&&) requires Unserializable<COutPoint, DataStream> && !ipc::capnp::Deserializable<COutPoint>::'lambda'(COutPoint&)::operator()<COutPoint>(COutPoint&) const
Line
Count
Source
87
1
    return read_dest.update([&](auto& value) {
88
1
        if (!input.has()) return;
89
1
        auto data = input.get();
90
1
        SpanReader stream({data.begin(), data.end()});
91
1
        auto wrapper{ipc::capnp::Wrap(stream)};
92
1
        value.Unserialize(wrapper);
93
1
    });
Unexecuted instantiation: auto decltype(auto) mp::CustomReadField<uint256, mp::StructField<mp::Accessor<mp::common_fields::Hash, 19>, ipc::capnp::messages::BlockRef::Reader const>, mp::ReadDestUpdate<uint256>>(mp::TypeList<uint256>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::common_fields::Hash, 19>, ipc::capnp::messages::BlockRef::Reader const>&&, mp::ReadDestUpdate<uint256>&&) requires Unserializable<uint256, DataStream> && !ipc::capnp::Deserializable<uint256>::'lambda'(uint256&)::operator()<uint256>(uint256&) const
Unexecuted instantiation: auto decltype(auto) mp::CustomReadField<CBlockHeader, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults>>, mp::ReadDestUpdate<CBlockHeader>>(mp::TypeList<CBlockHeader>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults>>&&, mp::ReadDestUpdate<CBlockHeader>&&) requires Unserializable<CBlockHeader, DataStream> && !ipc::capnp::Deserializable<CBlockHeader>::'lambda'(CBlockHeader&)::operator()<CBlockHeader>(CBlockHeader&) const
Unexecuted instantiation: auto decltype(auto) mp::CustomReadField<CBlock, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetBlockResults>>, mp::ReadDestUpdate<CBlock>>(mp::TypeList<CBlock>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetBlockResults>>&&, mp::ReadDestUpdate<CBlock>&&) requires Unserializable<CBlock, DataStream> && !ipc::capnp::Deserializable<CBlock>::'lambda'(CBlock&)::operator()<CBlock>(CBlock&) const
Unexecuted instantiation: auto decltype(auto) mp::CustomReadField<uint256, mp::StructField<mp::Accessor<mp::mining_fields::Witness, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&, mp::ReadDestUpdate<uint256>>(mp::TypeList<uint256>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Witness, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&, mp::ReadDestUpdate<uint256>&&) requires Unserializable<uint256, DataStream> && !ipc::capnp::Deserializable<uint256>::'lambda'(uint256&)::operator()<uint256>(uint256&) const
Unexecuted instantiation: auto decltype(auto) mp::CustomReadField<uint256, mp::StructField<mp::Accessor<mp::mining_fields::Witness, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&, mp::ReadDestEmplace<uint256, auto decltype(auto) mp::CustomReadField<uint256, mp::StructField<mp::Accessor<mp::mining_fields::Witness, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>, mp::ReadDestUpdate<std::optional<uint256>>>(mp::TypeList<std::optional<uint256>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Witness, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&&, mp::ReadDestUpdate<std::optional<uint256>>&&)::'lambda'(uint256&)::operator()<std::optional<uint256>>(uint256&) const::'lambda'(auto&&...)>>(mp::TypeList<uint256>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Witness, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&&, mp::ReadDestUpdate<std::optional<uint256>>&&) requires Unserializable<uint256, DataStream> && !ipc::capnp::Deserializable<uint256>::'lambda'(uint256&)::operator()<uint256>(uint256&) const
Unexecuted instantiation: auto decltype(auto) mp::CustomReadField<CTxOut, mp::ValueField<capnp::Data::Reader>, mp::ReadDestEmplace<CTxOut, auto decltype(auto) mp::ReadList<CTxOut, mp::StructField<mp::Accessor<mp::mining_fields::RequiredOutputs, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&, mp::ReadDestUpdate<std::vector<CTxOut, std::allocator<CTxOut>>>&, decltype(auto) mp::CustomReadField<CTxOut, mp::StructField<mp::Accessor<mp::mining_fields::RequiredOutputs, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>, mp::ReadDestUpdate<std::vector<CTxOut, std::allocator<CTxOut>>>>(mp::TypeList<std::vector<CTxOut, std::allocator<CTxOut>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::RequiredOutputs, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&&, mp::ReadDestUpdate<std::vector<CTxOut, std::allocator<CTxOut>>>&&)::'lambda'(CTxOut&, unsigned long), decltype(auto) mp::CustomReadField<CTxOut, mp::StructField<mp::Accessor<mp::mining_fields::RequiredOutputs, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>, mp::ReadDestUpdate<std::vector<CTxOut, std::allocator<CTxOut>>>>(mp::TypeList<std::vector<CTxOut, std::allocator<CTxOut>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::RequiredOutputs, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&&, mp::ReadDestUpdate<std::vector<CTxOut, std::allocator<CTxOut>>>&&)::'lambda'(CTxOut&, auto&&...)>(mp::TypeList<CTxOut>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::RequiredOutputs, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&&, mp::ReadDestUpdate<std::vector<CTxOut, std::allocator<CTxOut>>>&&, decltype(auto) mp::CustomReadField<CTxOut, mp::StructField<mp::Accessor<mp::mining_fields::RequiredOutputs, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>, mp::ReadDestUpdate<std::vector<CTxOut, std::allocator<CTxOut>>>>(mp::TypeList<std::vector<CTxOut, std::allocator<CTxOut>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::RequiredOutputs, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&&, mp::ReadDestUpdate<std::vector<CTxOut, std::allocator<CTxOut>>>&&)::'lambda'(CTxOut&, unsigned long)&&, decltype(auto) mp::CustomReadField<CTxOut, mp::StructField<mp::Accessor<mp::mining_fields::RequiredOutputs, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>, mp::ReadDestUpdate<std::vector<CTxOut, std::allocator<CTxOut>>>>(mp::TypeList<std::vector<CTxOut, std::allocator<CTxOut>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::RequiredOutputs, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&&, mp::ReadDestUpdate<std::vector<CTxOut, std::allocator<CTxOut>>>&&)::'lambda'(CTxOut&, auto&&...)&&)::'lambda'(CTxOut&)::operator()<std::vector<CTxOut, std::allocator<CTxOut>>>(CTxOut&) const::'lambda'(auto&&...)>>(mp::TypeList<CTxOut>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::RequiredOutputs, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&&, mp::ReadDestUpdate<std::vector<CTxOut, std::allocator<CTxOut>>>&&) requires Unserializable<CTxOut, DataStream> && !ipc::capnp::Deserializable<CTxOut>::'lambda'(CTxOut&)::operator()<CTxOut>(CTxOut&) const
Unexecuted instantiation: auto decltype(auto) mp::CustomReadField<uint256, mp::ValueField<capnp::Data::Reader>, mp::ReadDestEmplace<uint256, auto decltype(auto) mp::ReadList<uint256, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>&, mp::ReadDestUpdate<std::vector<uint256, std::allocator<uint256>>>&, decltype(auto) mp::CustomReadField<uint256, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>, mp::ReadDestUpdate<std::vector<uint256, std::allocator<uint256>>>>(mp::TypeList<std::vector<uint256, std::allocator<uint256>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>&&, mp::ReadDestUpdate<std::vector<uint256, std::allocator<uint256>>>&&)::'lambda'(uint256&, unsigned long), decltype(auto) mp::CustomReadField<uint256, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>, mp::ReadDestUpdate<std::vector<uint256, std::allocator<uint256>>>>(mp::TypeList<std::vector<uint256, std::allocator<uint256>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>&&, mp::ReadDestUpdate<std::vector<uint256, std::allocator<uint256>>>&&)::'lambda'(uint256&, auto&&...)>(mp::TypeList<uint256>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>&&, mp::ReadDestUpdate<std::vector<uint256, std::allocator<uint256>>>&&, decltype(auto) mp::CustomReadField<uint256, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>, mp::ReadDestUpdate<std::vector<uint256, std::allocator<uint256>>>>(mp::TypeList<std::vector<uint256, std::allocator<uint256>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>&&, mp::ReadDestUpdate<std::vector<uint256, std::allocator<uint256>>>&&)::'lambda'(uint256&, unsigned long)&&, decltype(auto) mp::CustomReadField<uint256, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>, mp::ReadDestUpdate<std::vector<uint256, std::allocator<uint256>>>>(mp::TypeList<std::vector<uint256, std::allocator<uint256>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>&&, mp::ReadDestUpdate<std::vector<uint256, std::allocator<uint256>>>&&)::'lambda'(uint256&, auto&&...)&&)::'lambda'(uint256&)::operator()<std::vector<uint256, std::allocator<uint256>>>(uint256&) const::'lambda'(auto&&...)>>(mp::TypeList<uint256>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>&&, mp::ReadDestUpdate<std::vector<uint256, std::allocator<uint256>>>&&) requires Unserializable<uint256, DataStream> && !ipc::capnp::Deserializable<uint256>::'lambda'(uint256&)::operator()<uint256>(uint256&) const
auto decltype(auto) mp::CustomReadField<uint256, mp::StructField<mp::Accessor<mp::mining_fields::CurrentTip, 17>, ipc::capnp::messages::Mining::WaitTipChangedParams::Reader const>, mp::ReadDestEmplace<uint256, void mp::PassField<mp::Accessor<mp::mining_fields::CurrentTip, 17>, uint256, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>>, mp::ServerField<1, mp::Accessor<mp::mining_fields::Timeout, 1>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall>> const&, mp::TypeList<std::chrono::duration<double, std::ratio<1l, 1000l>>>>(mp::Priority<0>, mp::TypeList<uint256>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>>&, mp::ServerField<1, mp::Accessor<mp::mining_fields::Timeout, 1>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall>> const&, mp::TypeList<std::chrono::duration<double, std::ratio<1l, 1000l>>>&&)::'lambda'(auto&&...)>>(mp::TypeList<uint256>, mp::Priority<1>, mp::InvokeContext&, uint256&&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>>&&) requires Unserializable<uint256, DataStream> && !ipc::capnp::Deserializable<uint256>::'lambda'(uint256&)::operator()<uint256>(uint256&) const
Line
Count
Source
87
3
    return read_dest.update([&](auto& value) {
88
3
        if (!input.has()) return;
89
3
        auto data = input.get();
90
3
        SpanReader stream({data.begin(), data.end()});
91
3
        auto wrapper{ipc::capnp::Wrap(stream)};
92
3
        value.Unserialize(wrapper);
93
3
    });
auto decltype(auto) mp::CustomReadField<CBlock, mp::StructField<mp::Accessor<mp::mining_fields::Block, 17>, ipc::capnp::messages::Mining::CheckBlockParams::Reader const>, mp::ReadDestEmplace<CBlock, void mp::PassField<mp::Accessor<mp::mining_fields::Block, 17>, CBlock const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>>, mp::ServerField<1, mp::Accessor<mp::mining_fields::Options, 17>, mp::ServerField<1, mp::Accessor<mp::mining_fields::Reason, 18>, mp::ServerField<1, mp::Accessor<mp::mining_fields::Debug, 18>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 2>, mp::ServerCall>>>> const&, mp::TypeList<node::BlockCheckOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&>>(mp::Priority<0>, mp::TypeList<CBlock const&>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>>&, mp::ServerField<1, mp::Accessor<mp::mining_fields::Options, 17>, mp::ServerField<1, mp::Accessor<mp::mining_fields::Reason, 18>, mp::ServerField<1, mp::Accessor<mp::mining_fields::Debug, 18>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 2>, mp::ServerCall>>>> const&, mp::TypeList<node::BlockCheckOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&>&&)::'lambda'(auto&&...)>>(mp::TypeList<CBlock>, mp::Priority<1>, mp::InvokeContext&, CBlock const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>>&&) requires Unserializable<CBlock, DataStream> && !ipc::capnp::Deserializable<CBlock>::'lambda'(CBlock&)::operator()<CBlock>(CBlock&) const
Line
Count
Source
87
3
    return read_dest.update([&](auto& value) {
88
3
        if (!input.has()) return;
89
3
        auto data = input.get();
90
3
        SpanReader stream({data.begin(), data.end()});
91
3
        auto wrapper{ipc::capnp::Wrap(stream)};
92
3
        value.Unserialize(wrapper);
93
3
    });
auto decltype(auto) mp::CustomReadField<CBlock, mp::StructField<mp::Accessor<mp::mining_fields::Block, 17>, ipc::capnp::messages::Mining::SubmitBlockParams::Reader const>, mp::ReadDestEmplace<CBlock, void mp::PassField<mp::Accessor<mp::mining_fields::Block, 17>, CBlock const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>>, mp::ServerField<1, mp::Accessor<mp::mining_fields::Reason, 18>, mp::ServerField<1, mp::Accessor<mp::mining_fields::Debug, 18>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 2>, mp::ServerCall>>> const&, mp::TypeList<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&>>(mp::Priority<0>, mp::TypeList<CBlock const&>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>>&, mp::ServerField<1, mp::Accessor<mp::mining_fields::Reason, 18>, mp::ServerField<1, mp::Accessor<mp::mining_fields::Debug, 18>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 2>, mp::ServerCall>>> const&, mp::TypeList<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&>&&)::'lambda'(auto&&...)>>(mp::TypeList<CBlock>, mp::Priority<1>, mp::InvokeContext&, CBlock const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>>&&) requires Unserializable<CBlock, DataStream> && !ipc::capnp::Deserializable<CBlock>::'lambda'(CBlock&)::operator()<CBlock>(CBlock&) const
Line
Count
Source
87
12
    return read_dest.update([&](auto& value) {
88
12
        if (!input.has()) return;
89
12
        auto data = input.get();
90
12
        SpanReader stream({data.begin(), data.end()});
91
12
        auto wrapper{ipc::capnp::Wrap(stream)};
92
12
        value.Unserialize(wrapper);
93
12
    });
auto decltype(auto) mp::CustomReadField<transaction_identifier<false>, mp::ValueField<capnp::Data::Reader>, mp::ReadDestEmplace<transaction_identifier<false>, auto decltype(auto) mp::ReadList<transaction_identifier<false>, mp::StructField<mp::Accessor<mp::mining_fields::Txids, 17>, ipc::capnp::messages::Mining::GetTransactionsByTxIDParams::Reader const>&, mp::ReadDestEmplace<std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>>, void mp::PassField<mp::Accessor<mp::mining_fields::Txids, 17>, std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>>(mp::Priority<0>, mp::TypeList<std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>&&)::'lambda'(auto&&...)>&, decltype(auto) mp::CustomReadField<transaction_identifier<false>, mp::StructField<mp::Accessor<mp::mining_fields::Txids, 17>, ipc::capnp::messages::Mining::GetTransactionsByTxIDParams::Reader const>, mp::ReadDestEmplace<std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>>, void mp::PassField<mp::Accessor<mp::mining_fields::Txids, 17>, std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>>(mp::Priority<0>, mp::TypeList<std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>&&)::'lambda'(auto&&...)>>(mp::TypeList<std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>>>, mp::Priority<1>, mp::InvokeContext&, std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&&)::'lambda'(transaction_identifier<false>&, unsigned long), decltype(auto) mp::CustomReadField<transaction_identifier<false>, mp::StructField<mp::Accessor<mp::mining_fields::Txids, 17>, ipc::capnp::messages::Mining::GetTransactionsByTxIDParams::Reader const>, mp::ReadDestEmplace<std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>>, void mp::PassField<mp::Accessor<mp::mining_fields::Txids, 17>, std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>>(mp::Priority<0>, mp::TypeList<std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>&&)::'lambda'(auto&&...)>>(mp::TypeList<std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>>>, mp::Priority<1>, mp::InvokeContext&, std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&&)::'lambda'(transaction_identifier<false>&, auto&&...)>(mp::TypeList<transaction_identifier<false>>, mp::InvokeContext&, std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&&, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, decltype(auto) mp::CustomReadField<transaction_identifier<false>, mp::StructField<mp::Accessor<mp::mining_fields::Txids, 17>, ipc::capnp::messages::Mining::GetTransactionsByTxIDParams::Reader const>, mp::ReadDestEmplace<std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>>, void mp::PassField<mp::Accessor<mp::mining_fields::Txids, 17>, std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>>(mp::Priority<0>, mp::TypeList<std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>&&)::'lambda'(auto&&...)>>(mp::TypeList<std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>>>, mp::Priority<1>, mp::InvokeContext&, std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&&)::'lambda'(transaction_identifier<false>&, auto&&...)&&)::'lambda'(transaction_identifier<false>&)::operator()<std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>>>(transaction_identifier<false>&) const::'lambda'(auto&&...)>>(mp::TypeList<transaction_identifier<false>>, mp::Priority<1>, mp::InvokeContext&, std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&&) requires Unserializable<transaction_identifier<false>, DataStream> && !ipc::capnp::Deserializable<transaction_identifier<false>>::'lambda'(transaction_identifier<false>&)::operator()<transaction_identifier<false>>(transaction_identifier<false>&) const
Line
Count
Source
87
4
    return read_dest.update([&](auto& value) {
88
4
        if (!input.has()) return;
89
4
        auto data = input.get();
90
4
        SpanReader stream({data.begin(), data.end()});
91
4
        auto wrapper{ipc::capnp::Wrap(stream)};
92
4
        value.Unserialize(wrapper);
93
4
    });
auto decltype(auto) mp::CustomReadField<transaction_identifier<true>, mp::ValueField<capnp::Data::Reader>, mp::ReadDestEmplace<transaction_identifier<true>, auto decltype(auto) mp::ReadList<transaction_identifier<true>, mp::StructField<mp::Accessor<mp::mining_fields::Wtxids, 17>, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams::Reader const>&, mp::ReadDestEmplace<std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>>, void mp::PassField<mp::Accessor<mp::mining_fields::Wtxids, 17>, std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>>(mp::Priority<0>, mp::TypeList<std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>&&)::'lambda'(auto&&...)>&, decltype(auto) mp::CustomReadField<transaction_identifier<true>, mp::StructField<mp::Accessor<mp::mining_fields::Wtxids, 17>, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams::Reader const>, mp::ReadDestEmplace<std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>>, void mp::PassField<mp::Accessor<mp::mining_fields::Wtxids, 17>, std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>>(mp::Priority<0>, mp::TypeList<std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>&&)::'lambda'(auto&&...)>>(mp::TypeList<std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>>>, mp::Priority<1>, mp::InvokeContext&, std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&&)::'lambda'(transaction_identifier<true>&, unsigned long), decltype(auto) mp::CustomReadField<transaction_identifier<true>, mp::StructField<mp::Accessor<mp::mining_fields::Wtxids, 17>, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams::Reader const>, mp::ReadDestEmplace<std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>>, void mp::PassField<mp::Accessor<mp::mining_fields::Wtxids, 17>, std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>>(mp::Priority<0>, mp::TypeList<std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>&&)::'lambda'(auto&&...)>>(mp::TypeList<std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>>>, mp::Priority<1>, mp::InvokeContext&, std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&&)::'lambda'(transaction_identifier<true>&, auto&&...)>(mp::TypeList<transaction_identifier<true>>, mp::InvokeContext&, std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&&, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, decltype(auto) mp::CustomReadField<transaction_identifier<true>, mp::StructField<mp::Accessor<mp::mining_fields::Wtxids, 17>, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams::Reader const>, mp::ReadDestEmplace<std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>>, void mp::PassField<mp::Accessor<mp::mining_fields::Wtxids, 17>, std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>>(mp::Priority<0>, mp::TypeList<std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>&&)::'lambda'(auto&&...)>>(mp::TypeList<std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>>>, mp::Priority<1>, mp::InvokeContext&, std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&&)::'lambda'(transaction_identifier<true>&, auto&&...)&&)::'lambda'(transaction_identifier<true>&)::operator()<std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>>>(transaction_identifier<true>&) const::'lambda'(auto&&...)>>(mp::TypeList<transaction_identifier<true>>, mp::Priority<1>, mp::InvokeContext&, std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&&) requires Unserializable<transaction_identifier<true>, DataStream> && !ipc::capnp::Deserializable<transaction_identifier<true>>::'lambda'(transaction_identifier<true>&)::operator()<transaction_identifier<true>>(transaction_identifier<true>&) const
Line
Count
Source
87
4
    return read_dest.update([&](auto& value) {
88
4
        if (!input.has()) return;
89
4
        auto data = input.get();
90
4
        SpanReader stream({data.begin(), data.end()});
91
4
        auto wrapper{ipc::capnp::Wrap(stream)};
92
4
        value.Unserialize(wrapper);
93
4
    });
94
28
}
decltype(auto) mp::CustomReadField<COutPoint, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassOutPointResults>>, mp::ReadDestUpdate<COutPoint>>(mp::TypeList<COutPoint>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassOutPointResults>>&&, mp::ReadDestUpdate<COutPoint>&&) requires Unserializable<COutPoint, DataStream> && !ipc::capnp::Deserializable<COutPoint>
Line
Count
Source
86
1
{
87
1
    return read_dest.update([&](auto& value) {
88
1
        if (!input.has()) return;
89
1
        auto data = input.get();
90
1
        SpanReader stream({data.begin(), data.end()});
91
1
        auto wrapper{ipc::capnp::Wrap(stream)};
92
1
        value.Unserialize(wrapper);
93
1
    });
94
1
}
decltype(auto) mp::CustomReadField<COutPoint, mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassOutPointParams::Reader const>, mp::ReadDestEmplace<COutPoint, void mp::PassField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, COutPoint, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassOutPointParams, gen::FooInterface::PassOutPointResults>>, mp::ServerRet<mp::Accessor<mp::ipc_test_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>>(mp::Priority<0>, mp::TypeList<COutPoint>, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassOutPointParams, gen::FooInterface::PassOutPointResults>>&, mp::ServerRet<mp::Accessor<mp::ipc_test_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>&&)::'lambda'(auto&&...)>>(mp::TypeList<COutPoint>, mp::Priority<1>, mp::InvokeContext&, COutPoint&&, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassOutPointParams, gen::FooInterface::PassOutPointResults>>&&) requires Unserializable<COutPoint, DataStream> && !ipc::capnp::Deserializable<COutPoint>
Line
Count
Source
86
1
{
87
1
    return read_dest.update([&](auto& value) {
88
1
        if (!input.has()) return;
89
1
        auto data = input.get();
90
1
        SpanReader stream({data.begin(), data.end()});
91
1
        auto wrapper{ipc::capnp::Wrap(stream)};
92
1
        value.Unserialize(wrapper);
93
1
    });
94
1
}
Unexecuted instantiation: decltype(auto) mp::CustomReadField<uint256, mp::StructField<mp::Accessor<mp::common_fields::Hash, 19>, ipc::capnp::messages::BlockRef::Reader const>, mp::ReadDestUpdate<uint256>>(mp::TypeList<uint256>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::common_fields::Hash, 19>, ipc::capnp::messages::BlockRef::Reader const>&&, mp::ReadDestUpdate<uint256>&&) requires Unserializable<uint256, DataStream> && !ipc::capnp::Deserializable<uint256>
Unexecuted instantiation: decltype(auto) mp::CustomReadField<CBlockHeader, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults>>, mp::ReadDestUpdate<CBlockHeader>>(mp::TypeList<CBlockHeader>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults>>&&, mp::ReadDestUpdate<CBlockHeader>&&) requires Unserializable<CBlockHeader, DataStream> && !ipc::capnp::Deserializable<CBlockHeader>
Unexecuted instantiation: decltype(auto) mp::CustomReadField<CBlock, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetBlockResults>>, mp::ReadDestUpdate<CBlock>>(mp::TypeList<CBlock>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetBlockResults>>&&, mp::ReadDestUpdate<CBlock>&&) requires Unserializable<CBlock, DataStream> && !ipc::capnp::Deserializable<CBlock>
Unexecuted instantiation: decltype(auto) mp::CustomReadField<uint256, mp::StructField<mp::Accessor<mp::mining_fields::Witness, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&, mp::ReadDestUpdate<uint256>>(mp::TypeList<uint256>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Witness, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&, mp::ReadDestUpdate<uint256>&&) requires Unserializable<uint256, DataStream> && !ipc::capnp::Deserializable<uint256>
Unexecuted instantiation: decltype(auto) mp::CustomReadField<uint256, mp::StructField<mp::Accessor<mp::mining_fields::Witness, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&, mp::ReadDestEmplace<uint256, auto decltype(auto) mp::CustomReadField<uint256, mp::StructField<mp::Accessor<mp::mining_fields::Witness, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>, mp::ReadDestUpdate<std::optional<uint256>>>(mp::TypeList<std::optional<uint256>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Witness, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&&, mp::ReadDestUpdate<std::optional<uint256>>&&)::'lambda'(uint256&)::operator()<std::optional<uint256>>(uint256&) const::'lambda'(auto&&...)>>(mp::TypeList<uint256>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Witness, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&&, mp::ReadDestUpdate<std::optional<uint256>>&&) requires Unserializable<uint256, DataStream> && !ipc::capnp::Deserializable<uint256>
Unexecuted instantiation: decltype(auto) mp::CustomReadField<CTxOut, mp::ValueField<capnp::Data::Reader>, mp::ReadDestEmplace<CTxOut, auto decltype(auto) mp::ReadList<CTxOut, mp::StructField<mp::Accessor<mp::mining_fields::RequiredOutputs, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&, mp::ReadDestUpdate<std::vector<CTxOut, std::allocator<CTxOut>>>&, decltype(auto) mp::CustomReadField<CTxOut, mp::StructField<mp::Accessor<mp::mining_fields::RequiredOutputs, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>, mp::ReadDestUpdate<std::vector<CTxOut, std::allocator<CTxOut>>>>(mp::TypeList<std::vector<CTxOut, std::allocator<CTxOut>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::RequiredOutputs, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&&, mp::ReadDestUpdate<std::vector<CTxOut, std::allocator<CTxOut>>>&&)::'lambda'(CTxOut&, unsigned long), decltype(auto) mp::CustomReadField<CTxOut, mp::StructField<mp::Accessor<mp::mining_fields::RequiredOutputs, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>, mp::ReadDestUpdate<std::vector<CTxOut, std::allocator<CTxOut>>>>(mp::TypeList<std::vector<CTxOut, std::allocator<CTxOut>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::RequiredOutputs, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&&, mp::ReadDestUpdate<std::vector<CTxOut, std::allocator<CTxOut>>>&&)::'lambda'(CTxOut&, auto&&...)>(mp::TypeList<CTxOut>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::RequiredOutputs, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&&, mp::ReadDestUpdate<std::vector<CTxOut, std::allocator<CTxOut>>>&&, decltype(auto) mp::CustomReadField<CTxOut, mp::StructField<mp::Accessor<mp::mining_fields::RequiredOutputs, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>, mp::ReadDestUpdate<std::vector<CTxOut, std::allocator<CTxOut>>>>(mp::TypeList<std::vector<CTxOut, std::allocator<CTxOut>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::RequiredOutputs, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&&, mp::ReadDestUpdate<std::vector<CTxOut, std::allocator<CTxOut>>>&&)::'lambda'(CTxOut&, unsigned long)&&, decltype(auto) mp::CustomReadField<CTxOut, mp::StructField<mp::Accessor<mp::mining_fields::RequiredOutputs, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>, mp::ReadDestUpdate<std::vector<CTxOut, std::allocator<CTxOut>>>>(mp::TypeList<std::vector<CTxOut, std::allocator<CTxOut>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::RequiredOutputs, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&&, mp::ReadDestUpdate<std::vector<CTxOut, std::allocator<CTxOut>>>&&)::'lambda'(CTxOut&, auto&&...)&&)::'lambda'(CTxOut&)::operator()<std::vector<CTxOut, std::allocator<CTxOut>>>(CTxOut&) const::'lambda'(auto&&...)>>(mp::TypeList<CTxOut>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::RequiredOutputs, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&&, mp::ReadDestUpdate<std::vector<CTxOut, std::allocator<CTxOut>>>&&) requires Unserializable<CTxOut, DataStream> && !ipc::capnp::Deserializable<CTxOut>
Unexecuted instantiation: decltype(auto) mp::CustomReadField<uint256, mp::ValueField<capnp::Data::Reader>, mp::ReadDestEmplace<uint256, auto decltype(auto) mp::ReadList<uint256, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>&, mp::ReadDestUpdate<std::vector<uint256, std::allocator<uint256>>>&, decltype(auto) mp::CustomReadField<uint256, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>, mp::ReadDestUpdate<std::vector<uint256, std::allocator<uint256>>>>(mp::TypeList<std::vector<uint256, std::allocator<uint256>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>&&, mp::ReadDestUpdate<std::vector<uint256, std::allocator<uint256>>>&&)::'lambda'(uint256&, unsigned long), decltype(auto) mp::CustomReadField<uint256, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>, mp::ReadDestUpdate<std::vector<uint256, std::allocator<uint256>>>>(mp::TypeList<std::vector<uint256, std::allocator<uint256>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>&&, mp::ReadDestUpdate<std::vector<uint256, std::allocator<uint256>>>&&)::'lambda'(uint256&, auto&&...)>(mp::TypeList<uint256>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>&&, mp::ReadDestUpdate<std::vector<uint256, std::allocator<uint256>>>&&, decltype(auto) mp::CustomReadField<uint256, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>, mp::ReadDestUpdate<std::vector<uint256, std::allocator<uint256>>>>(mp::TypeList<std::vector<uint256, std::allocator<uint256>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>&&, mp::ReadDestUpdate<std::vector<uint256, std::allocator<uint256>>>&&)::'lambda'(uint256&, unsigned long)&&, decltype(auto) mp::CustomReadField<uint256, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>, mp::ReadDestUpdate<std::vector<uint256, std::allocator<uint256>>>>(mp::TypeList<std::vector<uint256, std::allocator<uint256>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>&&, mp::ReadDestUpdate<std::vector<uint256, std::allocator<uint256>>>&&)::'lambda'(uint256&, auto&&...)&&)::'lambda'(uint256&)::operator()<std::vector<uint256, std::allocator<uint256>>>(uint256&) const::'lambda'(auto&&...)>>(mp::TypeList<uint256>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>&&, mp::ReadDestUpdate<std::vector<uint256, std::allocator<uint256>>>&&) requires Unserializable<uint256, DataStream> && !ipc::capnp::Deserializable<uint256>
decltype(auto) mp::CustomReadField<uint256, mp::StructField<mp::Accessor<mp::mining_fields::CurrentTip, 17>, ipc::capnp::messages::Mining::WaitTipChangedParams::Reader const>, mp::ReadDestEmplace<uint256, void mp::PassField<mp::Accessor<mp::mining_fields::CurrentTip, 17>, uint256, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>>, mp::ServerField<1, mp::Accessor<mp::mining_fields::Timeout, 1>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall>> const&, mp::TypeList<std::chrono::duration<double, std::ratio<1l, 1000l>>>>(mp::Priority<0>, mp::TypeList<uint256>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>>&, mp::ServerField<1, mp::Accessor<mp::mining_fields::Timeout, 1>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall>> const&, mp::TypeList<std::chrono::duration<double, std::ratio<1l, 1000l>>>&&)::'lambda'(auto&&...)>>(mp::TypeList<uint256>, mp::Priority<1>, mp::InvokeContext&, uint256&&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>>&&) requires Unserializable<uint256, DataStream> && !ipc::capnp::Deserializable<uint256>
Line
Count
Source
86
3
{
87
3
    return read_dest.update([&](auto& value) {
88
3
        if (!input.has()) return;
89
3
        auto data = input.get();
90
3
        SpanReader stream({data.begin(), data.end()});
91
3
        auto wrapper{ipc::capnp::Wrap(stream)};
92
3
        value.Unserialize(wrapper);
93
3
    });
94
3
}
decltype(auto) mp::CustomReadField<CBlock, mp::StructField<mp::Accessor<mp::mining_fields::Block, 17>, ipc::capnp::messages::Mining::CheckBlockParams::Reader const>, mp::ReadDestEmplace<CBlock, void mp::PassField<mp::Accessor<mp::mining_fields::Block, 17>, CBlock const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>>, mp::ServerField<1, mp::Accessor<mp::mining_fields::Options, 17>, mp::ServerField<1, mp::Accessor<mp::mining_fields::Reason, 18>, mp::ServerField<1, mp::Accessor<mp::mining_fields::Debug, 18>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 2>, mp::ServerCall>>>> const&, mp::TypeList<node::BlockCheckOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&>>(mp::Priority<0>, mp::TypeList<CBlock const&>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>>&, mp::ServerField<1, mp::Accessor<mp::mining_fields::Options, 17>, mp::ServerField<1, mp::Accessor<mp::mining_fields::Reason, 18>, mp::ServerField<1, mp::Accessor<mp::mining_fields::Debug, 18>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 2>, mp::ServerCall>>>> const&, mp::TypeList<node::BlockCheckOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&>&&)::'lambda'(auto&&...)>>(mp::TypeList<CBlock>, mp::Priority<1>, mp::InvokeContext&, CBlock const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>>&&) requires Unserializable<CBlock, DataStream> && !ipc::capnp::Deserializable<CBlock>
Line
Count
Source
86
3
{
87
3
    return read_dest.update([&](auto& value) {
88
3
        if (!input.has()) return;
89
3
        auto data = input.get();
90
3
        SpanReader stream({data.begin(), data.end()});
91
3
        auto wrapper{ipc::capnp::Wrap(stream)};
92
3
        value.Unserialize(wrapper);
93
3
    });
94
3
}
decltype(auto) mp::CustomReadField<CBlock, mp::StructField<mp::Accessor<mp::mining_fields::Block, 17>, ipc::capnp::messages::Mining::SubmitBlockParams::Reader const>, mp::ReadDestEmplace<CBlock, void mp::PassField<mp::Accessor<mp::mining_fields::Block, 17>, CBlock const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>>, mp::ServerField<1, mp::Accessor<mp::mining_fields::Reason, 18>, mp::ServerField<1, mp::Accessor<mp::mining_fields::Debug, 18>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 2>, mp::ServerCall>>> const&, mp::TypeList<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&>>(mp::Priority<0>, mp::TypeList<CBlock const&>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>>&, mp::ServerField<1, mp::Accessor<mp::mining_fields::Reason, 18>, mp::ServerField<1, mp::Accessor<mp::mining_fields::Debug, 18>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 2>, mp::ServerCall>>> const&, mp::TypeList<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&>&&)::'lambda'(auto&&...)>>(mp::TypeList<CBlock>, mp::Priority<1>, mp::InvokeContext&, CBlock const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>>&&) requires Unserializable<CBlock, DataStream> && !ipc::capnp::Deserializable<CBlock>
Line
Count
Source
86
12
{
87
12
    return read_dest.update([&](auto& value) {
88
12
        if (!input.has()) return;
89
12
        auto data = input.get();
90
12
        SpanReader stream({data.begin(), data.end()});
91
12
        auto wrapper{ipc::capnp::Wrap(stream)};
92
12
        value.Unserialize(wrapper);
93
12
    });
94
12
}
decltype(auto) mp::CustomReadField<transaction_identifier<false>, mp::ValueField<capnp::Data::Reader>, mp::ReadDestEmplace<transaction_identifier<false>, auto decltype(auto) mp::ReadList<transaction_identifier<false>, mp::StructField<mp::Accessor<mp::mining_fields::Txids, 17>, ipc::capnp::messages::Mining::GetTransactionsByTxIDParams::Reader const>&, mp::ReadDestEmplace<std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>>, void mp::PassField<mp::Accessor<mp::mining_fields::Txids, 17>, std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>>(mp::Priority<0>, mp::TypeList<std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>&&)::'lambda'(auto&&...)>&, decltype(auto) mp::CustomReadField<transaction_identifier<false>, mp::StructField<mp::Accessor<mp::mining_fields::Txids, 17>, ipc::capnp::messages::Mining::GetTransactionsByTxIDParams::Reader const>, mp::ReadDestEmplace<std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>>, void mp::PassField<mp::Accessor<mp::mining_fields::Txids, 17>, std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>>(mp::Priority<0>, mp::TypeList<std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>&&)::'lambda'(auto&&...)>>(mp::TypeList<std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>>>, mp::Priority<1>, mp::InvokeContext&, std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&&)::'lambda'(transaction_identifier<false>&, unsigned long), decltype(auto) mp::CustomReadField<transaction_identifier<false>, mp::StructField<mp::Accessor<mp::mining_fields::Txids, 17>, ipc::capnp::messages::Mining::GetTransactionsByTxIDParams::Reader const>, mp::ReadDestEmplace<std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>>, void mp::PassField<mp::Accessor<mp::mining_fields::Txids, 17>, std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>>(mp::Priority<0>, mp::TypeList<std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>&&)::'lambda'(auto&&...)>>(mp::TypeList<std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>>>, mp::Priority<1>, mp::InvokeContext&, std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&&)::'lambda'(transaction_identifier<false>&, auto&&...)>(mp::TypeList<transaction_identifier<false>>, mp::InvokeContext&, std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&&, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, decltype(auto) mp::CustomReadField<transaction_identifier<false>, mp::StructField<mp::Accessor<mp::mining_fields::Txids, 17>, ipc::capnp::messages::Mining::GetTransactionsByTxIDParams::Reader const>, mp::ReadDestEmplace<std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>>, void mp::PassField<mp::Accessor<mp::mining_fields::Txids, 17>, std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>>(mp::Priority<0>, mp::TypeList<std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>&&)::'lambda'(auto&&...)>>(mp::TypeList<std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>>>, mp::Priority<1>, mp::InvokeContext&, std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&&)::'lambda'(transaction_identifier<false>&, auto&&...)&&)::'lambda'(transaction_identifier<false>&)::operator()<std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>>>(transaction_identifier<false>&) const::'lambda'(auto&&...)>>(mp::TypeList<transaction_identifier<false>>, mp::Priority<1>, mp::InvokeContext&, std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&&) requires Unserializable<transaction_identifier<false>, DataStream> && !ipc::capnp::Deserializable<transaction_identifier<false>>
Line
Count
Source
86
4
{
87
4
    return read_dest.update([&](auto& value) {
88
4
        if (!input.has()) return;
89
4
        auto data = input.get();
90
4
        SpanReader stream({data.begin(), data.end()});
91
4
        auto wrapper{ipc::capnp::Wrap(stream)};
92
4
        value.Unserialize(wrapper);
93
4
    });
94
4
}
decltype(auto) mp::CustomReadField<transaction_identifier<true>, mp::ValueField<capnp::Data::Reader>, mp::ReadDestEmplace<transaction_identifier<true>, auto decltype(auto) mp::ReadList<transaction_identifier<true>, mp::StructField<mp::Accessor<mp::mining_fields::Wtxids, 17>, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams::Reader const>&, mp::ReadDestEmplace<std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>>, void mp::PassField<mp::Accessor<mp::mining_fields::Wtxids, 17>, std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>>(mp::Priority<0>, mp::TypeList<std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>&&)::'lambda'(auto&&...)>&, decltype(auto) mp::CustomReadField<transaction_identifier<true>, mp::StructField<mp::Accessor<mp::mining_fields::Wtxids, 17>, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams::Reader const>, mp::ReadDestEmplace<std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>>, void mp::PassField<mp::Accessor<mp::mining_fields::Wtxids, 17>, std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>>(mp::Priority<0>, mp::TypeList<std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>&&)::'lambda'(auto&&...)>>(mp::TypeList<std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>>>, mp::Priority<1>, mp::InvokeContext&, std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&&)::'lambda'(transaction_identifier<true>&, unsigned long), decltype(auto) mp::CustomReadField<transaction_identifier<true>, mp::StructField<mp::Accessor<mp::mining_fields::Wtxids, 17>, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams::Reader const>, mp::ReadDestEmplace<std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>>, void mp::PassField<mp::Accessor<mp::mining_fields::Wtxids, 17>, std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>>(mp::Priority<0>, mp::TypeList<std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>&&)::'lambda'(auto&&...)>>(mp::TypeList<std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>>>, mp::Priority<1>, mp::InvokeContext&, std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&&)::'lambda'(transaction_identifier<true>&, auto&&...)>(mp::TypeList<transaction_identifier<true>>, mp::InvokeContext&, std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&&, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, decltype(auto) mp::CustomReadField<transaction_identifier<true>, mp::StructField<mp::Accessor<mp::mining_fields::Wtxids, 17>, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams::Reader const>, mp::ReadDestEmplace<std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>>, void mp::PassField<mp::Accessor<mp::mining_fields::Wtxids, 17>, std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>>(mp::Priority<0>, mp::TypeList<std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>&&)::'lambda'(auto&&...)>>(mp::TypeList<std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>>>, mp::Priority<1>, mp::InvokeContext&, std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&&)::'lambda'(transaction_identifier<true>&, auto&&...)&&)::'lambda'(transaction_identifier<true>&)::operator()<std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>>>(transaction_identifier<true>&) const::'lambda'(auto&&...)>>(mp::TypeList<transaction_identifier<true>>, mp::Priority<1>, mp::InvokeContext&, std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&&) requires Unserializable<transaction_identifier<true>, DataStream> && !ipc::capnp::Deserializable<transaction_identifier<true>>
Line
Count
Source
86
4
{
87
4
    return read_dest.update([&](auto& value) {
88
4
        if (!input.has()) return;
89
4
        auto data = input.get();
90
4
        SpanReader stream({data.begin(), data.end()});
91
4
        auto wrapper{ipc::capnp::Wrap(stream)};
92
4
        value.Unserialize(wrapper);
93
4
    });
94
4
}
95
96
//! Overload multiprocess library's CustomReadField hook to allow any object
97
//! with a deserialize constructor to be read from a capnproto Data field or
98
//! returned from capnproto interface. Use Priority<1> so this hook has medium
99
//! priority, and higher priority hooks could take precedence over this one.
100
template <typename LocalType, typename Input, typename ReadDest>
101
decltype(auto) CustomReadField(TypeList<LocalType>, Priority<1>, InvokeContext& invoke_context, Input&& input, ReadDest&& read_dest)
102
requires ipc::capnp::Deserializable<LocalType>
103
27
{
104
27
    assert(input.has());
105
27
    auto data = input.get();
106
27
    SpanReader stream({data.begin(), data.end()});
107
27
    auto wrapper{ipc::capnp::Wrap(stream)};
108
27
    return read_dest.construct(::deserialize, wrapper);
109
27
}
decltype(auto) mp::CustomReadField<CTransaction, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassTransactionResults>>, mp::ReadDestEmplace<CTransaction, auto decltype(auto) mp::CustomReadField<CTransaction, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassTransactionResults>>, mp::ReadDestUpdate<std::shared_ptr<CTransaction const>>>(mp::TypeList<std::shared_ptr<CTransaction const>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassTransactionResults>>&&, mp::ReadDestUpdate<std::shared_ptr<CTransaction const>>&&)::'lambda'(CTransaction&)::operator()<std::shared_ptr<CTransaction const>>(CTransaction&) const::'lambda'(auto&&...)>>(mp::TypeList<CTransaction>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassTransactionResults>>&&, mp::ReadDestUpdate<std::shared_ptr<CTransaction const>>&&) requires ipc::capnp::Deserializable<CTransaction>
Line
Count
Source
103
1
{
104
1
    assert(input.has());
105
1
    auto data = input.get();
106
1
    SpanReader stream({data.begin(), data.end()});
107
1
    auto wrapper{ipc::capnp::Wrap(stream)};
108
1
    return read_dest.construct(::deserialize, wrapper);
109
1
}
decltype(auto) mp::CustomReadField<CTransaction, mp::ValueField<capnp::Data::Reader>, mp::ReadDestEmplace<CTransaction, auto decltype(auto) mp::CustomReadField<CTransaction, mp::ValueField<capnp::Data::Reader>, mp::ReadDestEmplace<std::shared_ptr<CTransaction const>, auto decltype(auto) mp::ReadList<std::shared_ptr<CTransaction const>, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassTransactionsResults>>&, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>&, decltype(auto) mp::CustomReadField<std::shared_ptr<CTransaction const>, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassTransactionsResults>>, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>>(mp::TypeList<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassTransactionsResults>>&&, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>&&)::'lambda'(std::shared_ptr<CTransaction const>&, unsigned long), decltype(auto) mp::CustomReadField<std::shared_ptr<CTransaction const>, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassTransactionsResults>>, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>>(mp::TypeList<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassTransactionsResults>>&&, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>&&)::'lambda'(std::shared_ptr<CTransaction const>&, auto&&...)>(mp::TypeList<std::shared_ptr<CTransaction const>>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassTransactionsResults>>&&, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>&&, decltype(auto) mp::CustomReadField<std::shared_ptr<CTransaction const>, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassTransactionsResults>>, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>>(mp::TypeList<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassTransactionsResults>>&&, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>&&)::'lambda'(std::shared_ptr<CTransaction const>&, unsigned long)&&, decltype(auto) mp::CustomReadField<std::shared_ptr<CTransaction const>, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassTransactionsResults>>, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>>(mp::TypeList<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassTransactionsResults>>&&, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>&&)::'lambda'(std::shared_ptr<CTransaction const>&, auto&&...)&&)::'lambda'(std::shared_ptr<CTransaction const>&)::operator()<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>(std::shared_ptr<CTransaction const>&) const::'lambda'(auto&&...)>>(mp::TypeList<std::shared_ptr<std::shared_ptr<CTransaction const> const>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassTransactionsResults>>&&, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>&&)::'lambda'(std::shared_ptr<CTransaction const>&)::operator()<std::shared_ptr<CTransaction const>>(std::shared_ptr<CTransaction const>&) const::'lambda'(auto&&...)>>(mp::TypeList<std::shared_ptr<CTransaction const>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassTransactionsResults>>&&, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>&&) requires ipc::capnp::Deserializable<std::shared_ptr<CTransaction const>>
Line
Count
Source
103
1
{
104
1
    assert(input.has());
105
1
    auto data = input.get();
106
1
    SpanReader stream({data.begin(), data.end()});
107
1
    auto wrapper{ipc::capnp::Wrap(stream)};
108
1
    return read_dest.construct(::deserialize, wrapper);
109
1
}
decltype(auto) mp::CustomReadField<CTransaction, mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassTransactionParams::Reader const>, mp::ReadDestEmplace<CTransaction, auto decltype(auto) mp::CustomReadField<CTransaction, mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassTransactionParams::Reader const>, mp::ReadDestEmplace<std::shared_ptr<CTransaction const>, void mp::PassField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::shared_ptr<CTransaction const>, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionParams, gen::FooInterface::PassTransactionResults>>, mp::ServerRet<mp::Accessor<mp::ipc_test_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>>(mp::Priority<0>, mp::TypeList<std::shared_ptr<CTransaction const>>, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionParams, gen::FooInterface::PassTransactionResults>>&, mp::ServerRet<mp::Accessor<mp::ipc_test_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>&&)::'lambda'(auto&&...)>>(mp::TypeList<std::shared_ptr<CTransaction const>>, mp::Priority<1>, mp::InvokeContext&, std::shared_ptr<CTransaction const>&&, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionParams, gen::FooInterface::PassTransactionResults>>&&)::'lambda'(CTransaction&)::operator()<std::shared_ptr<CTransaction const>>(CTransaction&) const::'lambda'(auto&&...)>>(mp::TypeList<CTransaction>, mp::Priority<1>, mp::InvokeContext&, std::shared_ptr<CTransaction const>&&, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionParams, gen::FooInterface::PassTransactionResults>>&&) requires ipc::capnp::Deserializable<CTransaction>
Line
Count
Source
103
1
{
104
1
    assert(input.has());
105
1
    auto data = input.get();
106
1
    SpanReader stream({data.begin(), data.end()});
107
1
    auto wrapper{ipc::capnp::Wrap(stream)};
108
1
    return read_dest.construct(::deserialize, wrapper);
109
1
}
decltype(auto) mp::CustomReadField<CTransaction, mp::ValueField<capnp::Data::Reader>, mp::ReadDestEmplace<CTransaction, auto decltype(auto) mp::CustomReadField<CTransaction, mp::ValueField<capnp::Data::Reader>, mp::ReadDestEmplace<std::shared_ptr<CTransaction const>, auto decltype(auto) mp::ReadList<std::shared_ptr<CTransaction const>, mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassTransactionsParams::Reader const>&, mp::ReadDestEmplace<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>, void mp::PassField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionsParams, gen::FooInterface::PassTransactionsResults>>, mp::ServerRet<mp::Accessor<mp::ipc_test_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>>(mp::Priority<0>, mp::TypeList<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionsParams, gen::FooInterface::PassTransactionsResults>>&, mp::ServerRet<mp::Accessor<mp::ipc_test_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>&&)::'lambda'(auto&&...)>&, decltype(auto) mp::CustomReadField<std::shared_ptr<CTransaction const>, mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassTransactionsParams::Reader const>, mp::ReadDestEmplace<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>, void mp::PassField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionsParams, gen::FooInterface::PassTransactionsResults>>, mp::ServerRet<mp::Accessor<mp::ipc_test_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>>(mp::Priority<0>, mp::TypeList<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionsParams, gen::FooInterface::PassTransactionsResults>>&, mp::ServerRet<mp::Accessor<mp::ipc_test_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>&&)::'lambda'(auto&&...)>>(mp::TypeList<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>, mp::Priority<1>, mp::InvokeContext&, std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>&&, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionsParams, gen::FooInterface::PassTransactionsResults>>&&)::'lambda'(std::shared_ptr<CTransaction const>&, unsigned long), decltype(auto) mp::CustomReadField<std::shared_ptr<CTransaction const>, mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassTransactionsParams::Reader const>, mp::ReadDestEmplace<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>, void mp::PassField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionsParams, gen::FooInterface::PassTransactionsResults>>, mp::ServerRet<mp::Accessor<mp::ipc_test_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>>(mp::Priority<0>, mp::TypeList<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionsParams, gen::FooInterface::PassTransactionsResults>>&, mp::ServerRet<mp::Accessor<mp::ipc_test_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>&&)::'lambda'(auto&&...)>>(mp::TypeList<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>, mp::Priority<1>, mp::InvokeContext&, std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>&&, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionsParams, gen::FooInterface::PassTransactionsResults>>&&)::'lambda'(std::shared_ptr<CTransaction const>&, auto&&...)>(mp::TypeList<std::shared_ptr<CTransaction const>>, mp::InvokeContext&, std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>&&, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionsParams, gen::FooInterface::PassTransactionsResults>>&&, mp::ServerRet<mp::Accessor<mp::ipc_test_fields::Result, 18>, mp::ServerCall> const&, decltype(auto) mp::CustomReadField<std::shared_ptr<CTransaction const>, mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassTransactionsParams::Reader const>, mp::ReadDestEmplace<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>, void mp::PassField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionsParams, gen::FooInterface::PassTransactionsResults>>, mp::ServerRet<mp::Accessor<mp::ipc_test_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>>(mp::Priority<0>, mp::TypeList<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionsParams, gen::FooInterface::PassTransactionsResults>>&, mp::ServerRet<mp::Accessor<mp::ipc_test_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>&&)::'lambda'(auto&&...)>>(mp::TypeList<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>, mp::Priority<1>, mp::InvokeContext&, std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>&&, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionsParams, gen::FooInterface::PassTransactionsResults>>&&)::'lambda'(std::shared_ptr<CTransaction const>&, auto&&...)&&)::'lambda'(std::shared_ptr<CTransaction const>&)::operator()<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>(std::shared_ptr<CTransaction const>&) const::'lambda'(auto&&...)>>(mp::TypeList<std::shared_ptr<std::shared_ptr<CTransaction const> const>>, mp::Priority<1>, mp::InvokeContext&, std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>&&, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionsParams, gen::FooInterface::PassTransactionsResults>>&&)::'lambda'(std::shared_ptr<CTransaction const>&)::operator()<std::shared_ptr<CTransaction const>>(std::shared_ptr<CTransaction const>&) const::'lambda'(auto&&...)>>(mp::TypeList<std::shared_ptr<CTransaction const>>, mp::Priority<1>, mp::InvokeContext&, std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>&&, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionsParams, gen::FooInterface::PassTransactionsResults>>&&) requires ipc::capnp::Deserializable<std::shared_ptr<CTransaction const>>
Line
Count
Source
103
1
{
104
1
    assert(input.has());
105
1
    auto data = input.get();
106
1
    SpanReader stream({data.begin(), data.end()});
107
1
    auto wrapper{ipc::capnp::Wrap(stream)};
108
1
    return read_dest.construct(::deserialize, wrapper);
109
1
}
Unexecuted instantiation: decltype(auto) mp::CustomReadField<CTransaction, mp::ValueField<capnp::Data::Reader>, mp::ReadDestEmplace<CTransaction, auto decltype(auto) mp::CustomReadField<CTransaction, mp::ValueField<capnp::Data::Reader>, mp::ReadDestEmplace<std::shared_ptr<CTransaction const>, auto decltype(auto) mp::ReadList<std::shared_ptr<CTransaction const>, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>&, decltype(auto) mp::CustomReadField<std::shared_ptr<CTransaction const>, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>>(mp::TypeList<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&&, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>&&)::'lambda'(std::shared_ptr<CTransaction const>&, unsigned long), decltype(auto) mp::CustomReadField<std::shared_ptr<CTransaction const>, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>>(mp::TypeList<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&&, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>&&)::'lambda'(std::shared_ptr<CTransaction const>&, auto&&...)>(mp::TypeList<std::shared_ptr<CTransaction const>>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&&, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>&&, decltype(auto) mp::CustomReadField<std::shared_ptr<CTransaction const>, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>>(mp::TypeList<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&&, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>&&)::'lambda'(std::shared_ptr<CTransaction const>&, unsigned long)&&, decltype(auto) mp::CustomReadField<std::shared_ptr<CTransaction const>, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>>(mp::TypeList<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&&, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>&&)::'lambda'(std::shared_ptr<CTransaction const>&, auto&&...)&&)::'lambda'(std::shared_ptr<CTransaction const>&)::operator()<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>(std::shared_ptr<CTransaction const>&) const::'lambda'(auto&&...)>>(mp::TypeList<std::shared_ptr<std::shared_ptr<CTransaction const> const>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&&, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>&&)::'lambda'(std::shared_ptr<CTransaction const>&)::operator()<std::shared_ptr<CTransaction const>>(std::shared_ptr<CTransaction const>&) const::'lambda'(auto&&...)>>(mp::TypeList<std::shared_ptr<CTransaction const>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&&, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>&&) requires ipc::capnp::Deserializable<std::shared_ptr<CTransaction const>>
Unexecuted instantiation: decltype(auto) mp::CustomReadField<CTransaction, mp::ValueField<capnp::Data::Reader>, mp::ReadDestEmplace<CTransaction, auto decltype(auto) mp::CustomReadField<CTransaction, mp::ValueField<capnp::Data::Reader>, mp::ReadDestEmplace<std::shared_ptr<CTransaction const>, auto decltype(auto) mp::ReadList<std::shared_ptr<CTransaction const>, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>&, decltype(auto) mp::CustomReadField<std::shared_ptr<CTransaction const>, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>>(mp::TypeList<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&&, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>&&)::'lambda'(std::shared_ptr<CTransaction const>&, unsigned long), decltype(auto) mp::CustomReadField<std::shared_ptr<CTransaction const>, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>>(mp::TypeList<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&&, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>&&)::'lambda'(std::shared_ptr<CTransaction const>&, auto&&...)>(mp::TypeList<std::shared_ptr<CTransaction const>>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&&, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>&&, decltype(auto) mp::CustomReadField<std::shared_ptr<CTransaction const>, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>>(mp::TypeList<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&&, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>&&)::'lambda'(std::shared_ptr<CTransaction const>&, unsigned long)&&, decltype(auto) mp::CustomReadField<std::shared_ptr<CTransaction const>, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>>(mp::TypeList<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&&, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>&&)::'lambda'(std::shared_ptr<CTransaction const>&, auto&&...)&&)::'lambda'(std::shared_ptr<CTransaction const>&)::operator()<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>(std::shared_ptr<CTransaction const>&) const::'lambda'(auto&&...)>>(mp::TypeList<std::shared_ptr<std::shared_ptr<CTransaction const> const>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&&, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>&&)::'lambda'(std::shared_ptr<CTransaction const>&)::operator()<std::shared_ptr<CTransaction const>>(std::shared_ptr<CTransaction const>&) const::'lambda'(auto&&...)>>(mp::TypeList<std::shared_ptr<CTransaction const>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&&, mp::ReadDestUpdate<std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>>&&) requires ipc::capnp::Deserializable<std::shared_ptr<CTransaction const>>
Unexecuted instantiation: decltype(auto) mp::CustomReadField<CTransaction, mp::StructField<mp::Accessor<mp::mining_fields::Coinbase, 17>, ipc::capnp::messages::BlockTemplate::SubmitSolutionOld7Params::Reader const>, mp::ReadDestEmplace<CTransaction, auto decltype(auto) mp::CustomReadField<CTransaction, mp::StructField<mp::Accessor<mp::mining_fields::Coinbase, 17>, ipc::capnp::messages::BlockTemplate::SubmitSolutionOld7Params::Reader const>, mp::ReadDestEmplace<std::shared_ptr<CTransaction const>, void mp::PassField<mp::Accessor<mp::mining_fields::Coinbase, 17>, std::shared_ptr<CTransaction const>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::SubmitSolutionOld7Params, ipc::capnp::messages::BlockTemplate::SubmitSolutionOld7Results>>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 2>, mp::ServerCall> const&, mp::TypeList<>, unsigned int, unsigned int, unsigned int>(mp::Priority<0>, mp::TypeList<std::shared_ptr<CTransaction const>>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::SubmitSolutionOld7Params, ipc::capnp::messages::BlockTemplate::SubmitSolutionOld7Results>>&, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 2>, mp::ServerCall> const&, mp::TypeList<>&&, unsigned int&&, unsigned int&&, unsigned int&&)::'lambda'(auto&&...)>>(mp::TypeList<std::shared_ptr<CTransaction const>>, mp::Priority<1>, mp::InvokeContext&, std::shared_ptr<CTransaction const>&&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::SubmitSolutionOld7Params, ipc::capnp::messages::BlockTemplate::SubmitSolutionOld7Results>>&&)::'lambda'(CTransaction&)::operator()<std::shared_ptr<CTransaction const>>(CTransaction&) const::'lambda'(auto&&...)>>(mp::TypeList<CTransaction>, mp::Priority<1>, mp::InvokeContext&, std::shared_ptr<CTransaction const>&&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::SubmitSolutionOld7Params, ipc::capnp::messages::BlockTemplate::SubmitSolutionOld7Results>>&&) requires ipc::capnp::Deserializable<CTransaction>
decltype(auto) mp::CustomReadField<CTransaction, mp::StructField<mp::Accessor<mp::mining_fields::Coinbase, 17>, ipc::capnp::messages::BlockTemplate::SubmitSolutionParams::Reader const>, mp::ReadDestEmplace<CTransaction, auto decltype(auto) mp::CustomReadField<CTransaction, mp::StructField<mp::Accessor<mp::mining_fields::Coinbase, 17>, ipc::capnp::messages::BlockTemplate::SubmitSolutionParams::Reader const>, mp::ReadDestEmplace<std::shared_ptr<CTransaction const>, void mp::PassField<mp::Accessor<mp::mining_fields::Coinbase, 17>, std::shared_ptr<CTransaction const>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>>, mp::ServerField<1, mp::Accessor<mp::mining_fields::Reason, 18>, mp::ServerField<1, mp::Accessor<mp::mining_fields::Debug, 18>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 2>, mp::ServerCall>>> const&, mp::TypeList<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&>, unsigned int, unsigned int, unsigned int>(mp::Priority<0>, mp::TypeList<std::shared_ptr<CTransaction const>>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>>&, mp::ServerField<1, mp::Accessor<mp::mining_fields::Reason, 18>, mp::ServerField<1, mp::Accessor<mp::mining_fields::Debug, 18>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 2>, mp::ServerCall>>> const&, mp::TypeList<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&>&&, unsigned int&&, unsigned int&&, unsigned int&&)::'lambda'(auto&&...)>>(mp::TypeList<std::shared_ptr<CTransaction const>>, mp::Priority<1>, mp::InvokeContext&, std::shared_ptr<CTransaction const>&&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>>&&)::'lambda'(CTransaction&)::operator()<std::shared_ptr<CTransaction const>>(CTransaction&) const::'lambda'(auto&&...)>>(mp::TypeList<CTransaction>, mp::Priority<1>, mp::InvokeContext&, std::shared_ptr<CTransaction const>&&, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>>&&) requires ipc::capnp::Deserializable<CTransaction>
Line
Count
Source
103
23
{
104
23
    assert(input.has());
105
23
    auto data = input.get();
106
23
    SpanReader stream({data.begin(), data.end()});
107
23
    auto wrapper{ipc::capnp::Wrap(stream)};
108
23
    return read_dest.construct(::deserialize, wrapper);
109
23
}
110
111
//! Overload CustomBuildField and CustomReadField to serialize UniValue
112
//! parameters and return values as JSON strings.
113
template <typename Value, typename Output>
114
void CustomBuildField(TypeList<UniValue>, Priority<1>, InvokeContext& invoke_context, Value&& value, Output&& output)
115
10
{
116
10
    std::string str = value.write();
117
10
    auto result = output.init(str.size());
118
10
    memcpy(result.begin(), str.data(), str.size());
119
10
}
void mp::CustomBuildField<UniValue, mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, capnp::Request<gen::FooInterface::PassUniValueParams, gen::FooInterface::PassUniValueResults>>>(mp::TypeList<UniValue>, mp::Priority<1>, mp::InvokeContext&, UniValue&&, mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, capnp::Request<gen::FooInterface::PassUniValueParams, gen::FooInterface::PassUniValueResults>>&&)
Line
Count
Source
115
1
{
116
1
    std::string str = value.write();
117
1
    auto result = output.init(str.size());
118
1
    memcpy(result.begin(), str.data(), str.size());
119
1
}
void mp::CustomBuildField<UniValue, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, gen::FooInterface::PassUniValueResults::Builder>&>(mp::TypeList<UniValue>, mp::Priority<1>, mp::InvokeContext&, UniValue&&, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, gen::FooInterface::PassUniValueResults::Builder>&)
Line
Count
Source
115
1
{
116
1
    std::string str = value.write();
117
1
    auto result = output.init(str.size());
118
1
    memcpy(result.begin(), str.data(), str.size());
119
1
}
void mp::CustomBuildField<UniValue, mp::StructField<mp::Accessor<mp::rpc_fields::Request, 17>, capnp::Request<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>>>(mp::TypeList<UniValue>, mp::Priority<1>, mp::InvokeContext&, UniValue&&, mp::StructField<mp::Accessor<mp::rpc_fields::Request, 17>, capnp::Request<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>>&&)
Line
Count
Source
115
4
{
116
4
    std::string str = value.write();
117
4
    auto result = output.init(str.size());
118
4
    memcpy(result.begin(), str.data(), str.size());
119
4
}
void mp::CustomBuildField<UniValue, mp::StructField<mp::Accessor<mp::rpc_fields::Result, 18>, ipc::capnp::messages::Rpc::ExecuteRpcResults::Builder>&>(mp::TypeList<UniValue>, mp::Priority<1>, mp::InvokeContext&, UniValue&&, mp::StructField<mp::Accessor<mp::rpc_fields::Result, 18>, ipc::capnp::messages::Rpc::ExecuteRpcResults::Builder>&)
Line
Count
Source
115
4
{
116
4
    std::string str = value.write();
117
4
    auto result = output.init(str.size());
118
4
    memcpy(result.begin(), str.data(), str.size());
119
4
}
120
121
template <typename Input, typename ReadDest>
122
decltype(auto) CustomReadField(TypeList<UniValue>, Priority<1>, InvokeContext& invoke_context, Input&& input,
123
                               ReadDest&& read_dest)
124
10
{
125
10
    return read_dest.update([&](auto& value) {
126
10
        auto data = input.get();
127
10
        if (!value.read(std::string_view{data.begin(), data.size()})) {
128
0
            throw std::runtime_error{"invalid JSON received over IPC"};
129
0
        }
130
10
    });
auto decltype(auto) mp::CustomReadField<mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassUniValueResults>>, mp::ReadDestUpdate<UniValue>>(mp::TypeList<UniValue>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassUniValueResults>>&&, mp::ReadDestUpdate<UniValue>&&)::'lambda'(mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassUniValueResults>>&)::operator()<UniValue>(mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassUniValueResults>>&) const
Line
Count
Source
125
1
    return read_dest.update([&](auto& value) {
126
1
        auto data = input.get();
127
1
        if (!value.read(std::string_view{data.begin(), data.size()})) {
128
0
            throw std::runtime_error{"invalid JSON received over IPC"};
129
0
        }
130
1
    });
auto decltype(auto) mp::CustomReadField<mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassUniValueParams::Reader const>, mp::ReadDestEmplace<UniValue, void mp::PassField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, UniValue, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassUniValueParams, gen::FooInterface::PassUniValueResults>>, mp::ServerRet<mp::Accessor<mp::ipc_test_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>>(mp::Priority<0>, mp::TypeList<UniValue>, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassUniValueParams, gen::FooInterface::PassUniValueResults>>&, mp::ServerRet<mp::Accessor<mp::ipc_test_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>&&)::'lambda'(auto&&...)>>(mp::TypeList<UniValue>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassUniValueParams::Reader const>&&, UniValue&&)::'lambda'(mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassUniValueParams::Reader const>&)::operator()<UniValue>(mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassUniValueParams::Reader const>&) const
Line
Count
Source
125
1
    return read_dest.update([&](auto& value) {
126
1
        auto data = input.get();
127
1
        if (!value.read(std::string_view{data.begin(), data.size()})) {
128
0
            throw std::runtime_error{"invalid JSON received over IPC"};
129
0
        }
130
1
    });
auto decltype(auto) mp::CustomReadField<mp::StructField<mp::Accessor<mp::rpc_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Rpc::ExecuteRpcResults>>, mp::ReadDestUpdate<UniValue>>(mp::TypeList<UniValue>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::rpc_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Rpc::ExecuteRpcResults>>&&, mp::ReadDestUpdate<UniValue>&&)::'lambda'(mp::StructField<mp::Accessor<mp::rpc_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Rpc::ExecuteRpcResults>>&)::operator()<UniValue>(mp::StructField<mp::Accessor<mp::rpc_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Rpc::ExecuteRpcResults>>&) const
Line
Count
Source
125
4
    return read_dest.update([&](auto& value) {
126
4
        auto data = input.get();
127
4
        if (!value.read(std::string_view{data.begin(), data.size()})) {
128
0
            throw std::runtime_error{"invalid JSON received over IPC"};
129
0
        }
130
4
    });
auto decltype(auto) mp::CustomReadField<mp::StructField<mp::Accessor<mp::rpc_fields::Request, 17>, ipc::capnp::messages::Rpc::ExecuteRpcParams::Reader const>, mp::ReadDestEmplace<UniValue, void mp::PassField<mp::Accessor<mp::rpc_fields::Request, 17>, UniValue, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Rpc>, capnp::CallContext<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>>, mp::ServerField<1, mp::Accessor<mp::rpc_fields::Uri, 17>, mp::ServerField<1, mp::Accessor<mp::rpc_fields::User, 17>, mp::ServerRet<mp::Accessor<mp::rpc_fields::Result, 18>, mp::ServerCall>>> const&, mp::TypeList<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>(mp::Priority<0>, mp::TypeList<UniValue>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Rpc>, capnp::CallContext<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>>&, mp::ServerField<1, mp::Accessor<mp::rpc_fields::Uri, 17>, mp::ServerField<1, mp::Accessor<mp::rpc_fields::User, 17>, mp::ServerRet<mp::Accessor<mp::rpc_fields::Result, 18>, mp::ServerCall>>> const&, mp::TypeList<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>&&)::'lambda'(auto&&...)>>(mp::TypeList<UniValue>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::rpc_fields::Request, 17>, ipc::capnp::messages::Rpc::ExecuteRpcParams::Reader const>&&, UniValue&&)::'lambda'(mp::StructField<mp::Accessor<mp::rpc_fields::Request, 17>, ipc::capnp::messages::Rpc::ExecuteRpcParams::Reader const>&)::operator()<UniValue>(mp::StructField<mp::Accessor<mp::rpc_fields::Request, 17>, ipc::capnp::messages::Rpc::ExecuteRpcParams::Reader const>&) const
Line
Count
Source
125
4
    return read_dest.update([&](auto& value) {
126
4
        auto data = input.get();
127
4
        if (!value.read(std::string_view{data.begin(), data.size()})) {
128
0
            throw std::runtime_error{"invalid JSON received over IPC"};
129
0
        }
130
4
    });
131
10
}
decltype(auto) mp::CustomReadField<mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassUniValueResults>>, mp::ReadDestUpdate<UniValue>>(mp::TypeList<UniValue>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassUniValueResults>>&&, mp::ReadDestUpdate<UniValue>&&)
Line
Count
Source
124
1
{
125
1
    return read_dest.update([&](auto& value) {
126
1
        auto data = input.get();
127
1
        if (!value.read(std::string_view{data.begin(), data.size()})) {
128
1
            throw std::runtime_error{"invalid JSON received over IPC"};
129
1
        }
130
1
    });
131
1
}
decltype(auto) mp::CustomReadField<mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassUniValueParams::Reader const>, mp::ReadDestEmplace<UniValue, void mp::PassField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, UniValue, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassUniValueParams, gen::FooInterface::PassUniValueResults>>, mp::ServerRet<mp::Accessor<mp::ipc_test_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>>(mp::Priority<0>, mp::TypeList<UniValue>, mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassUniValueParams, gen::FooInterface::PassUniValueResults>>&, mp::ServerRet<mp::Accessor<mp::ipc_test_fields::Result, 18>, mp::ServerCall> const&, mp::TypeList<>&&)::'lambda'(auto&&...)>>(mp::TypeList<UniValue>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassUniValueParams::Reader const>&&, UniValue&&)
Line
Count
Source
124
1
{
125
1
    return read_dest.update([&](auto& value) {
126
1
        auto data = input.get();
127
1
        if (!value.read(std::string_view{data.begin(), data.size()})) {
128
1
            throw std::runtime_error{"invalid JSON received over IPC"};
129
1
        }
130
1
    });
131
1
}
decltype(auto) mp::CustomReadField<mp::StructField<mp::Accessor<mp::rpc_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Rpc::ExecuteRpcResults>>, mp::ReadDestUpdate<UniValue>>(mp::TypeList<UniValue>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::rpc_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Rpc::ExecuteRpcResults>>&&, mp::ReadDestUpdate<UniValue>&&)
Line
Count
Source
124
4
{
125
4
    return read_dest.update([&](auto& value) {
126
4
        auto data = input.get();
127
4
        if (!value.read(std::string_view{data.begin(), data.size()})) {
128
4
            throw std::runtime_error{"invalid JSON received over IPC"};
129
4
        }
130
4
    });
131
4
}
decltype(auto) mp::CustomReadField<mp::StructField<mp::Accessor<mp::rpc_fields::Request, 17>, ipc::capnp::messages::Rpc::ExecuteRpcParams::Reader const>, mp::ReadDestEmplace<UniValue, void mp::PassField<mp::Accessor<mp::rpc_fields::Request, 17>, UniValue, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Rpc>, capnp::CallContext<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>>, mp::ServerField<1, mp::Accessor<mp::rpc_fields::Uri, 17>, mp::ServerField<1, mp::Accessor<mp::rpc_fields::User, 17>, mp::ServerRet<mp::Accessor<mp::rpc_fields::Result, 18>, mp::ServerCall>>> const&, mp::TypeList<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>(mp::Priority<0>, mp::TypeList<UniValue>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Rpc>, capnp::CallContext<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>>&, mp::ServerField<1, mp::Accessor<mp::rpc_fields::Uri, 17>, mp::ServerField<1, mp::Accessor<mp::rpc_fields::User, 17>, mp::ServerRet<mp::Accessor<mp::rpc_fields::Result, 18>, mp::ServerCall>>> const&, mp::TypeList<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>&&)::'lambda'(auto&&...)>>(mp::TypeList<UniValue>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::rpc_fields::Request, 17>, ipc::capnp::messages::Rpc::ExecuteRpcParams::Reader const>&&, UniValue&&)
Line
Count
Source
124
4
{
125
4
    return read_dest.update([&](auto& value) {
126
4
        auto data = input.get();
127
4
        if (!value.read(std::string_view{data.begin(), data.size()})) {
128
4
            throw std::runtime_error{"invalid JSON received over IPC"};
129
4
        }
130
4
    });
131
4
}
132
133
//! Interpret empty Data fields as null CTransactionRef values. This is safe to
134
//! do because no CTransaction is ever serialized as empty Data, and it is
135
//! convenient because this allows std::vector<CTransactionRef> to be passed as
136
//! List(Data) even if the vector contains null values, and even though Cap'n
137
//! Proto does not (currently) allow distinguishing between null and empty Data
138
//! values in a List. Interpreting empty Data values as null CTransactionRef
139
//! values works well for this purpose.
140
template <typename Input>
141
bool CustomHasField(TypeList<CTransaction>, InvokeContext& invoke_context, const Input& input)
142
30
{
143
30
    return input.get().size() > 0;
144
30
}
bool mp::CustomHasField<mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassTransactionResults>>>(mp::TypeList<CTransaction>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassTransactionResults>> const&)
Line
Count
Source
142
1
{
143
1
    return input.get().size() > 0;
144
1
}
bool mp::CustomHasField<mp::ValueField<capnp::Data::Reader>>(mp::TypeList<CTransaction>, mp::InvokeContext&, mp::ValueField<capnp::Data::Reader> const&)
Line
Count
Source
142
4
{
143
4
    return input.get().size() > 0;
144
4
}
bool mp::CustomHasField<mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassTransactionParams::Reader const>>(mp::TypeList<CTransaction>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassTransactionParams::Reader const> const&)
Line
Count
Source
142
1
{
143
1
    return input.get().size() > 0;
144
1
}
Unexecuted instantiation: bool mp::CustomHasField<mp::StructField<mp::Accessor<mp::mining_fields::Coinbase, 17>, ipc::capnp::messages::BlockTemplate::SubmitSolutionOld7Params::Reader const>>(mp::TypeList<CTransaction>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Coinbase, 17>, ipc::capnp::messages::BlockTemplate::SubmitSolutionOld7Params::Reader const> const&)
bool mp::CustomHasField<mp::StructField<mp::Accessor<mp::mining_fields::Coinbase, 17>, ipc::capnp::messages::BlockTemplate::SubmitSolutionParams::Reader const>>(mp::TypeList<CTransaction>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Coinbase, 17>, ipc::capnp::messages::BlockTemplate::SubmitSolutionParams::Reader const> const&)
Line
Count
Source
142
24
{
143
24
    return input.get().size() > 0;
144
24
}
145
} // namespace mp
146
147
#endif // BITCOIN_IPC_CAPNP_COMMON_TYPES_H