Coverage Report

Created: 2026-07-08 14:14

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/tmp/bitcoin/src/ipc/libmultiprocess/include/mp/util.h
Line
Count
Source
1
// Copyright (c) The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#ifndef MP_UTIL_H
6
#define MP_UTIL_H
7
8
#include <capnp/schema.h>
9
#include <cassert>
10
#include <cstdlib>
11
#include <cstring>
12
#include <exception>
13
#include <functional>
14
#include <kj/string-tree.h>
15
#include <mutex>
16
#include <string>
17
#include <tuple>
18
#include <typeinfo>
19
#include <type_traits>
20
#include <utility>
21
#include <variant>
22
#include <vector>
23
24
#if __has_include(<cxxabi.h>)
25
#include <cxxabi.h>
26
#include <memory>
27
#endif
28
29
namespace mp {
30
31
//! Generic utility functions used by capnp code.
32
33
//! Type holding a list of types.
34
//!
35
//! Example:
36
//!   TypeList<int, bool, void>
37
template <typename... Types>
38
struct TypeList
39
{
40
    static constexpr size_t size = sizeof...(Types);
41
};
42
43
//! Construct a template class value by deducing template arguments from the
44
//! types of constructor arguments, so they don't need to be specified manually.
45
//!
46
//! Uses of this can go away with class template deduction in C++17
47
//! (https://en.cppreference.com/w/cpp/language/class_template_argument_deduction)
48
//!
49
//! Example:
50
//!   Make<std::pair>(5, true) // Constructs std::pair<int, bool>(5, true);
51
template <template <typename...> class Class, typename... Types, typename... Args>
52
Class<Types..., std::remove_reference_t<Args>...> Make(Args&&... args)
53
397
{
54
397
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
397
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::A, 1>, std::remove_reference<capnp::Request<gen::FooInterface::AddParams, gen::FooInterface::AddResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::A, 1>, capnp::Request<gen::FooInterface::AddParams, gen::FooInterface::AddResults>&>(capnp::Request<gen::FooInterface::AddParams, gen::FooInterface::AddResults>&)
Line
Count
Source
53
2
{
54
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
2
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::B, 1>, std::remove_reference<capnp::Request<gen::FooInterface::AddParams, gen::FooInterface::AddResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::B, 1>, capnp::Request<gen::FooInterface::AddParams, gen::FooInterface::AddResults>&>(capnp::Request<gen::FooInterface::AddParams, gen::FooInterface::AddResults>&)
Line
Count
Source
53
2
{
54
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
2
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 2>, std::remove_reference<capnp::Request<gen::FooInterface::AddParams, gen::FooInterface::AddResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Result, 2>, capnp::Request<gen::FooInterface::AddParams, gen::FooInterface::AddResults>&>(capnp::Request<gen::FooInterface::AddParams, gen::FooInterface::AddResults>&)
Line
Count
Source
53
2
{
54
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
2
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::A, 1>, std::remove_reference<capnp::Response<gen::FooInterface::AddResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::A, 1>, capnp::Response<gen::FooInterface::AddResults>&>(capnp::Response<gen::FooInterface::AddResults>&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::B, 1>, std::remove_reference<capnp::Response<gen::FooInterface::AddResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::B, 1>, capnp::Response<gen::FooInterface::AddResults>&>(capnp::Response<gen::FooInterface::AddResults>&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 2>, std::remove_reference<capnp::Response<gen::FooInterface::AddResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Result, 2>, capnp::Response<gen::FooInterface::AddResults>&>(capnp::Response<gen::FooInterface::AddResults>&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::remove_reference<capnp::Request<gen::FooInterface::PassOutPointParams, gen::FooInterface::PassOutPointResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Arg, 17>, capnp::Request<gen::FooInterface::PassOutPointParams, gen::FooInterface::PassOutPointResults>&>(capnp::Request<gen::FooInterface::PassOutPointParams, gen::FooInterface::PassOutPointResults>&)
Line
Count
Source
53
2
{
54
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
2
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, std::remove_reference<capnp::Request<gen::FooInterface::PassOutPointParams, gen::FooInterface::PassOutPointResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Request<gen::FooInterface::PassOutPointParams, gen::FooInterface::PassOutPointResults>&>(capnp::Request<gen::FooInterface::PassOutPointParams, gen::FooInterface::PassOutPointResults>&)
Line
Count
Source
53
2
{
54
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
2
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::remove_reference<capnp::Response<gen::FooInterface::PassOutPointResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Arg, 17>, capnp::Response<gen::FooInterface::PassOutPointResults>&>(capnp::Response<gen::FooInterface::PassOutPointResults>&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, std::remove_reference<capnp::Response<gen::FooInterface::PassOutPointResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassOutPointResults>&>(capnp::Response<gen::FooInterface::PassOutPointResults>&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::remove_reference<capnp::Request<gen::FooInterface::PassUniValueParams, gen::FooInterface::PassUniValueResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Arg, 17>, capnp::Request<gen::FooInterface::PassUniValueParams, gen::FooInterface::PassUniValueResults>&>(capnp::Request<gen::FooInterface::PassUniValueParams, gen::FooInterface::PassUniValueResults>&)
Line
Count
Source
53
2
{
54
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
2
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, std::remove_reference<capnp::Request<gen::FooInterface::PassUniValueParams, gen::FooInterface::PassUniValueResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Request<gen::FooInterface::PassUniValueParams, gen::FooInterface::PassUniValueResults>&>(capnp::Request<gen::FooInterface::PassUniValueParams, gen::FooInterface::PassUniValueResults>&)
Line
Count
Source
53
2
{
54
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
2
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::remove_reference<capnp::Response<gen::FooInterface::PassUniValueResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Arg, 17>, capnp::Response<gen::FooInterface::PassUniValueResults>&>(capnp::Response<gen::FooInterface::PassUniValueResults>&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, std::remove_reference<capnp::Response<gen::FooInterface::PassUniValueResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassUniValueResults>&>(capnp::Response<gen::FooInterface::PassUniValueResults>&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::remove_reference<capnp::Request<gen::FooInterface::PassTransactionParams, gen::FooInterface::PassTransactionResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Arg, 17>, capnp::Request<gen::FooInterface::PassTransactionParams, gen::FooInterface::PassTransactionResults>&>(capnp::Request<gen::FooInterface::PassTransactionParams, gen::FooInterface::PassTransactionResults>&)
Line
Count
Source
53
2
{
54
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
2
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, std::remove_reference<capnp::Request<gen::FooInterface::PassTransactionParams, gen::FooInterface::PassTransactionResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Request<gen::FooInterface::PassTransactionParams, gen::FooInterface::PassTransactionResults>&>(capnp::Request<gen::FooInterface::PassTransactionParams, gen::FooInterface::PassTransactionResults>&)
Line
Count
Source
53
2
{
54
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
2
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::remove_reference<capnp::Response<gen::FooInterface::PassTransactionResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Arg, 17>, capnp::Response<gen::FooInterface::PassTransactionResults>&>(capnp::Response<gen::FooInterface::PassTransactionResults>&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, std::remove_reference<capnp::Response<gen::FooInterface::PassTransactionResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassTransactionResults>&>(capnp::Response<gen::FooInterface::PassTransactionResults>&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::remove_reference<capnp::Request<gen::FooInterface::PassVectorCharParams, gen::FooInterface::PassVectorCharResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Arg, 17>, capnp::Request<gen::FooInterface::PassVectorCharParams, gen::FooInterface::PassVectorCharResults>&>(capnp::Request<gen::FooInterface::PassVectorCharParams, gen::FooInterface::PassVectorCharResults>&)
Line
Count
Source
53
2
{
54
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
2
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, std::remove_reference<capnp::Request<gen::FooInterface::PassVectorCharParams, gen::FooInterface::PassVectorCharResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Request<gen::FooInterface::PassVectorCharParams, gen::FooInterface::PassVectorCharResults>&>(capnp::Request<gen::FooInterface::PassVectorCharParams, gen::FooInterface::PassVectorCharResults>&)
Line
Count
Source
53
2
{
54
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
2
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::remove_reference<capnp::Response<gen::FooInterface::PassVectorCharResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Arg, 17>, capnp::Response<gen::FooInterface::PassVectorCharResults>&>(capnp::Response<gen::FooInterface::PassVectorCharResults>&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, std::remove_reference<capnp::Response<gen::FooInterface::PassVectorCharResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassVectorCharResults>&>(capnp::Response<gen::FooInterface::PassVectorCharResults>&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::remove_reference<capnp::Request<gen::FooInterface::PassScriptParams, gen::FooInterface::PassScriptResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Arg, 17>, capnp::Request<gen::FooInterface::PassScriptParams, gen::FooInterface::PassScriptResults>&>(capnp::Request<gen::FooInterface::PassScriptParams, gen::FooInterface::PassScriptResults>&)
Line
Count
Source
53
2
{
54
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
2
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, std::remove_reference<capnp::Request<gen::FooInterface::PassScriptParams, gen::FooInterface::PassScriptResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Request<gen::FooInterface::PassScriptParams, gen::FooInterface::PassScriptResults>&>(capnp::Request<gen::FooInterface::PassScriptParams, gen::FooInterface::PassScriptResults>&)
Line
Count
Source
53
2
{
54
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
2
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::remove_reference<capnp::Response<gen::FooInterface::PassScriptResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Arg, 17>, capnp::Response<gen::FooInterface::PassScriptResults>&>(capnp::Response<gen::FooInterface::PassScriptResults>&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, std::remove_reference<capnp::Response<gen::FooInterface::PassScriptResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassScriptResults>&>(capnp::Response<gen::FooInterface::PassScriptResults>&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::remove_reference<capnp::Request<gen::FooInterface::PassTransactionsParams, gen::FooInterface::PassTransactionsResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Arg, 17>, capnp::Request<gen::FooInterface::PassTransactionsParams, gen::FooInterface::PassTransactionsResults>&>(capnp::Request<gen::FooInterface::PassTransactionsParams, gen::FooInterface::PassTransactionsResults>&)
Line
Count
Source
53
2
{
54
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
2
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, std::remove_reference<capnp::Request<gen::FooInterface::PassTransactionsParams, gen::FooInterface::PassTransactionsResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Request<gen::FooInterface::PassTransactionsParams, gen::FooInterface::PassTransactionsResults>&>(capnp::Request<gen::FooInterface::PassTransactionsParams, gen::FooInterface::PassTransactionsResults>&)
Line
Count
Source
53
2
{
54
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
2
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::remove_reference<capnp::Response<gen::FooInterface::PassTransactionsResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Arg, 17>, capnp::Response<gen::FooInterface::PassTransactionsResults>&>(capnp::Response<gen::FooInterface::PassTransactionsResults>&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::ValueField<std::remove_reference<capnp::Data::Reader&>::type> mp::Make<mp::ValueField, capnp::Data::Reader&>(capnp::Data::Reader&)
Line
Count
Source
53
4
{
54
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
4
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, std::remove_reference<capnp::Response<gen::FooInterface::PassTransactionsResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Result, 18>, capnp::Response<gen::FooInterface::PassTransactionsResults>&>(capnp::Response<gen::FooInterface::PassTransactionsResults>&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::ServerRet<mp::Accessor<mp::ipc_test_fields::Result, 2>, std::remove_reference<mp::ServerCall>::type> mp::Make<mp::ServerRet, mp::Accessor<mp::ipc_test_fields::Result, 2>, mp::ServerCall>(mp::ServerCall&&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::A, 1>, std::remove_reference<gen::FooInterface::AddParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::A, 1>, gen::FooInterface::AddParams::Reader const&>(gen::FooInterface::AddParams::Reader const&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::B, 1>, std::remove_reference<gen::FooInterface::AddParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::B, 1>, gen::FooInterface::AddParams::Reader const&>(gen::FooInterface::AddParams::Reader const&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 2>, std::remove_reference<gen::FooInterface::AddResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Result, 2>, gen::FooInterface::AddResults::Builder&>(gen::FooInterface::AddResults::Builder&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::B, 1>, std::remove_reference<gen::FooInterface::AddResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::B, 1>, gen::FooInterface::AddResults::Builder&>(gen::FooInterface::AddResults::Builder&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::A, 1>, std::remove_reference<gen::FooInterface::AddResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::A, 1>, gen::FooInterface::AddResults::Builder&>(gen::FooInterface::AddResults::Builder&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::ServerRet<mp::Accessor<mp::ipc_test_fields::Result, 18>, std::remove_reference<mp::ServerCall>::type> mp::Make<mp::ServerRet, mp::Accessor<mp::ipc_test_fields::Result, 18>, mp::ServerCall>(mp::ServerCall&&)
Line
Count
Source
53
6
{
54
6
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
6
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::remove_reference<gen::FooInterface::PassOutPointParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassOutPointParams::Reader const&>(gen::FooInterface::PassOutPointParams::Reader const&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, std::remove_reference<gen::FooInterface::PassOutPointResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Result, 18>, gen::FooInterface::PassOutPointResults::Builder&>(gen::FooInterface::PassOutPointResults::Builder&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::remove_reference<gen::FooInterface::PassOutPointResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassOutPointResults::Builder&>(gen::FooInterface::PassOutPointResults::Builder&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::remove_reference<gen::FooInterface::PassUniValueParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassUniValueParams::Reader const&>(gen::FooInterface::PassUniValueParams::Reader const&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, std::remove_reference<gen::FooInterface::PassUniValueResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Result, 18>, gen::FooInterface::PassUniValueResults::Builder&>(gen::FooInterface::PassUniValueResults::Builder&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::remove_reference<gen::FooInterface::PassUniValueResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassUniValueResults::Builder&>(gen::FooInterface::PassUniValueResults::Builder&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::remove_reference<gen::FooInterface::PassTransactionParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassTransactionParams::Reader const&>(gen::FooInterface::PassTransactionParams::Reader const&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, std::remove_reference<gen::FooInterface::PassTransactionResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Result, 18>, gen::FooInterface::PassTransactionResults::Builder&>(gen::FooInterface::PassTransactionResults::Builder&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::remove_reference<gen::FooInterface::PassTransactionResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassTransactionResults::Builder&>(gen::FooInterface::PassTransactionResults::Builder&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::remove_reference<gen::FooInterface::PassVectorCharParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassVectorCharParams::Reader const&>(gen::FooInterface::PassVectorCharParams::Reader const&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, std::remove_reference<gen::FooInterface::PassVectorCharResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Result, 18>, gen::FooInterface::PassVectorCharResults::Builder&>(gen::FooInterface::PassVectorCharResults::Builder&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::remove_reference<gen::FooInterface::PassVectorCharResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassVectorCharResults::Builder&>(gen::FooInterface::PassVectorCharResults::Builder&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::remove_reference<gen::FooInterface::PassScriptParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassScriptParams::Reader const&>(gen::FooInterface::PassScriptParams::Reader const&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, std::remove_reference<gen::FooInterface::PassScriptResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Result, 18>, gen::FooInterface::PassScriptResults::Builder&>(gen::FooInterface::PassScriptResults::Builder&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::remove_reference<gen::FooInterface::PassScriptResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassScriptResults::Builder&>(gen::FooInterface::PassScriptResults::Builder&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::remove_reference<gen::FooInterface::PassTransactionsParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassTransactionsParams::Reader const&>(gen::FooInterface::PassTransactionsParams::Reader const&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Result, 18>, std::remove_reference<gen::FooInterface::PassTransactionsResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Result, 18>, gen::FooInterface::PassTransactionsResults::Builder&>(gen::FooInterface::PassTransactionsResults::Builder&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::ipc_test_fields::Arg, 17>, std::remove_reference<gen::FooInterface::PassTransactionsResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::ipc_test_fields::Arg, 17>, gen::FooInterface::PassTransactionsResults::Builder&>(gen::FooInterface::PassTransactionsResults::Builder&)
Line
Count
Source
53
1
{
54
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
1
}
mp::StructField<mp::Accessor<mp::init_fields::ThreadMap, 19>, std::remove_reference<capnp::Request<ipc::capnp::messages::Init::ConstructParams, ipc::capnp::messages::Init::ConstructResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::init_fields::ThreadMap, 19>, capnp::Request<ipc::capnp::messages::Init::ConstructParams, ipc::capnp::messages::Init::ConstructResults>&>(capnp::Request<ipc::capnp::messages::Init::ConstructParams, ipc::capnp::messages::Init::ConstructResults>&)
Line
Count
Source
53
20
{
54
20
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
20
}
mp::StructField<mp::Accessor<mp::init_fields::ThreadMap, 19>, std::remove_reference<capnp::Response<ipc::capnp::messages::Init::ConstructResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::init_fields::ThreadMap, 19>, capnp::Response<ipc::capnp::messages::Init::ConstructResults>&>(capnp::Response<ipc::capnp::messages::Init::ConstructResults>&)
Line
Count
Source
53
10
{
54
10
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
10
}
mp::StructField<mp::Accessor<mp::init_fields::Context, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::Init::MakeEchoParams, ipc::capnp::messages::Init::MakeEchoResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::init_fields::Context, 17>, capnp::Request<ipc::capnp::messages::Init::MakeEchoParams, ipc::capnp::messages::Init::MakeEchoResults>&>(capnp::Request<ipc::capnp::messages::Init::MakeEchoParams, ipc::capnp::messages::Init::MakeEchoResults>&)
Line
Count
Source
53
12
{
54
12
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
12
}
mp::StructField<mp::Accessor<mp::init_fields::Result, 18>, std::remove_reference<capnp::Request<ipc::capnp::messages::Init::MakeEchoParams, ipc::capnp::messages::Init::MakeEchoResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::init_fields::Result, 18>, capnp::Request<ipc::capnp::messages::Init::MakeEchoParams, ipc::capnp::messages::Init::MakeEchoResults>&>(capnp::Request<ipc::capnp::messages::Init::MakeEchoParams, ipc::capnp::messages::Init::MakeEchoResults>&)
Line
Count
Source
53
12
{
54
12
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
12
}
mp::StructField<mp::Accessor<mp::init_fields::Context, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::Init::MakeEchoResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::init_fields::Context, 17>, capnp::Response<ipc::capnp::messages::Init::MakeEchoResults>&>(capnp::Response<ipc::capnp::messages::Init::MakeEchoResults>&)
Line
Count
Source
53
6
{
54
6
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
6
}
mp::StructField<mp::Accessor<mp::init_fields::Result, 18>, std::remove_reference<capnp::Response<ipc::capnp::messages::Init::MakeEchoResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::init_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Init::MakeEchoResults>&>(capnp::Response<ipc::capnp::messages::Init::MakeEchoResults>&)
Line
Count
Source
53
6
{
54
6
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
6
}
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::init_fields::Context, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::Init::MakeMiningParams, ipc::capnp::messages::Init::MakeMiningResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::init_fields::Context, 17>, capnp::Request<ipc::capnp::messages::Init::MakeMiningParams, ipc::capnp::messages::Init::MakeMiningResults>&>(capnp::Request<ipc::capnp::messages::Init::MakeMiningParams, ipc::capnp::messages::Init::MakeMiningResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::init_fields::Result, 18>, std::remove_reference<capnp::Request<ipc::capnp::messages::Init::MakeMiningParams, ipc::capnp::messages::Init::MakeMiningResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::init_fields::Result, 18>, capnp::Request<ipc::capnp::messages::Init::MakeMiningParams, ipc::capnp::messages::Init::MakeMiningResults>&>(capnp::Request<ipc::capnp::messages::Init::MakeMiningParams, ipc::capnp::messages::Init::MakeMiningResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::init_fields::Context, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::Init::MakeMiningResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::init_fields::Context, 17>, capnp::Response<ipc::capnp::messages::Init::MakeMiningResults>&>(capnp::Response<ipc::capnp::messages::Init::MakeMiningResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::init_fields::Result, 18>, std::remove_reference<capnp::Response<ipc::capnp::messages::Init::MakeMiningResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::init_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Init::MakeMiningResults>&>(capnp::Response<ipc::capnp::messages::Init::MakeMiningResults>&)
mp::StructField<mp::Accessor<mp::init_fields::Context, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::Init::MakeRpcParams, ipc::capnp::messages::Init::MakeRpcResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::init_fields::Context, 17>, capnp::Request<ipc::capnp::messages::Init::MakeRpcParams, ipc::capnp::messages::Init::MakeRpcResults>&>(capnp::Request<ipc::capnp::messages::Init::MakeRpcParams, ipc::capnp::messages::Init::MakeRpcResults>&)
Line
Count
Source
53
8
{
54
8
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
8
}
mp::StructField<mp::Accessor<mp::init_fields::Result, 18>, std::remove_reference<capnp::Request<ipc::capnp::messages::Init::MakeRpcParams, ipc::capnp::messages::Init::MakeRpcResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::init_fields::Result, 18>, capnp::Request<ipc::capnp::messages::Init::MakeRpcParams, ipc::capnp::messages::Init::MakeRpcResults>&>(capnp::Request<ipc::capnp::messages::Init::MakeRpcParams, ipc::capnp::messages::Init::MakeRpcResults>&)
Line
Count
Source
53
8
{
54
8
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
8
}
mp::StructField<mp::Accessor<mp::init_fields::Context, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::Init::MakeRpcResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::init_fields::Context, 17>, capnp::Response<ipc::capnp::messages::Init::MakeRpcResults>&>(capnp::Response<ipc::capnp::messages::Init::MakeRpcResults>&)
Line
Count
Source
53
4
{
54
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
4
}
mp::StructField<mp::Accessor<mp::init_fields::Result, 18>, std::remove_reference<capnp::Response<ipc::capnp::messages::Init::MakeRpcResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::init_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Init::MakeRpcResults>&>(capnp::Response<ipc::capnp::messages::Init::MakeRpcResults>&)
Line
Count
Source
53
4
{
54
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
4
}
mp::StructField<mp::Accessor<mp::echo_fields::Context, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::Echo::DestroyParams, ipc::capnp::messages::Echo::DestroyResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::echo_fields::Context, 17>, capnp::Request<ipc::capnp::messages::Echo::DestroyParams, ipc::capnp::messages::Echo::DestroyResults>&>(capnp::Request<ipc::capnp::messages::Echo::DestroyParams, ipc::capnp::messages::Echo::DestroyResults>&)
Line
Count
Source
53
12
{
54
12
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
12
}
mp::StructField<mp::Accessor<mp::echo_fields::Context, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::Echo::DestroyResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::echo_fields::Context, 17>, capnp::Response<ipc::capnp::messages::Echo::DestroyResults>&>(capnp::Response<ipc::capnp::messages::Echo::DestroyResults>&)
Line
Count
Source
53
6
{
54
6
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
6
}
mp::StructField<mp::Accessor<mp::echo_fields::Context, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::Echo::EchoParams, ipc::capnp::messages::Echo::EchoResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::echo_fields::Context, 17>, capnp::Request<ipc::capnp::messages::Echo::EchoParams, ipc::capnp::messages::Echo::EchoResults>&>(capnp::Request<ipc::capnp::messages::Echo::EchoParams, ipc::capnp::messages::Echo::EchoResults>&)
Line
Count
Source
53
12
{
54
12
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
12
}
mp::StructField<mp::Accessor<mp::echo_fields::Echo, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::Echo::EchoParams, ipc::capnp::messages::Echo::EchoResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::echo_fields::Echo, 17>, capnp::Request<ipc::capnp::messages::Echo::EchoParams, ipc::capnp::messages::Echo::EchoResults>&>(capnp::Request<ipc::capnp::messages::Echo::EchoParams, ipc::capnp::messages::Echo::EchoResults>&)
Line
Count
Source
53
12
{
54
12
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
12
}
mp::StructField<mp::Accessor<mp::echo_fields::Result, 18>, std::remove_reference<capnp::Request<ipc::capnp::messages::Echo::EchoParams, ipc::capnp::messages::Echo::EchoResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::echo_fields::Result, 18>, capnp::Request<ipc::capnp::messages::Echo::EchoParams, ipc::capnp::messages::Echo::EchoResults>&>(capnp::Request<ipc::capnp::messages::Echo::EchoParams, ipc::capnp::messages::Echo::EchoResults>&)
Line
Count
Source
53
12
{
54
12
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
12
}
mp::StructField<mp::Accessor<mp::echo_fields::Context, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::Echo::EchoResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::echo_fields::Context, 17>, capnp::Response<ipc::capnp::messages::Echo::EchoResults>&>(capnp::Response<ipc::capnp::messages::Echo::EchoResults>&)
Line
Count
Source
53
6
{
54
6
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
6
}
mp::StructField<mp::Accessor<mp::echo_fields::Echo, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::Echo::EchoResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::echo_fields::Echo, 17>, capnp::Response<ipc::capnp::messages::Echo::EchoResults>&>(capnp::Response<ipc::capnp::messages::Echo::EchoResults>&)
Line
Count
Source
53
6
{
54
6
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
6
}
mp::StructField<mp::Accessor<mp::echo_fields::Result, 18>, std::remove_reference<capnp::Response<ipc::capnp::messages::Echo::EchoResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::echo_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Echo::EchoResults>&>(capnp::Response<ipc::capnp::messages::Echo::EchoResults>&)
Line
Count
Source
53
6
{
54
6
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
6
}
mp::StructField<mp::Accessor<mp::init_fields::ThreadMap, 19>, std::remove_reference<ipc::capnp::messages::Init::ConstructParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::init_fields::ThreadMap, 19>, ipc::capnp::messages::Init::ConstructParams::Reader const&>(ipc::capnp::messages::Init::ConstructParams::Reader const&)
Line
Count
Source
53
10
{
54
10
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
10
}
mp::StructField<mp::Accessor<mp::init_fields::ThreadMap, 19>, std::remove_reference<ipc::capnp::messages::Init::ConstructResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::init_fields::ThreadMap, 19>, ipc::capnp::messages::Init::ConstructResults::Builder&>(ipc::capnp::messages::Init::ConstructResults::Builder&)
Line
Count
Source
53
10
{
54
10
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
10
}
mp::ServerRet<mp::Accessor<mp::init_fields::Result, 18>, std::remove_reference<mp::ServerCall>::type> mp::Make<mp::ServerRet, mp::Accessor<mp::init_fields::Result, 18>, mp::ServerCall>(mp::ServerCall&&)
Line
Count
Source
53
10
{
54
10
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
10
}
mp::StructField<mp::Accessor<mp::init_fields::Result, 18>, std::remove_reference<ipc::capnp::messages::Init::MakeEchoResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::init_fields::Result, 18>, ipc::capnp::messages::Init::MakeEchoResults::Builder&>(ipc::capnp::messages::Init::MakeEchoResults::Builder&)
Line
Count
Source
53
6
{
54
6
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
6
}
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::init_fields::Result, 18>, std::remove_reference<ipc::capnp::messages::Init::MakeMiningResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::init_fields::Result, 18>, ipc::capnp::messages::Init::MakeMiningResults::Builder&>(ipc::capnp::messages::Init::MakeMiningResults::Builder&)
mp::StructField<mp::Accessor<mp::init_fields::Result, 18>, std::remove_reference<ipc::capnp::messages::Init::MakeRpcResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::init_fields::Result, 18>, ipc::capnp::messages::Init::MakeRpcResults::Builder&>(ipc::capnp::messages::Init::MakeRpcResults::Builder&)
Line
Count
Source
53
4
{
54
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
4
}
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::IsTestChainParams, ipc::capnp::messages::Mining::IsTestChainResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Request<ipc::capnp::messages::Mining::IsTestChainParams, ipc::capnp::messages::Mining::IsTestChainResults>&>(capnp::Request<ipc::capnp::messages::Mining::IsTestChainParams, ipc::capnp::messages::Mining::IsTestChainResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 2>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::IsTestChainParams, ipc::capnp::messages::Mining::IsTestChainResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 2>, capnp::Request<ipc::capnp::messages::Mining::IsTestChainParams, ipc::capnp::messages::Mining::IsTestChainResults>&>(capnp::Request<ipc::capnp::messages::Mining::IsTestChainParams, ipc::capnp::messages::Mining::IsTestChainResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::IsTestChainResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Response<ipc::capnp::messages::Mining::IsTestChainResults>&>(capnp::Response<ipc::capnp::messages::Mining::IsTestChainResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 2>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::IsTestChainResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 2>, capnp::Response<ipc::capnp::messages::Mining::IsTestChainResults>&>(capnp::Response<ipc::capnp::messages::Mining::IsTestChainResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::IsInitialBlockDownloadParams, ipc::capnp::messages::Mining::IsInitialBlockDownloadResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Request<ipc::capnp::messages::Mining::IsInitialBlockDownloadParams, ipc::capnp::messages::Mining::IsInitialBlockDownloadResults>&>(capnp::Request<ipc::capnp::messages::Mining::IsInitialBlockDownloadParams, ipc::capnp::messages::Mining::IsInitialBlockDownloadResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 2>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::IsInitialBlockDownloadParams, ipc::capnp::messages::Mining::IsInitialBlockDownloadResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 2>, capnp::Request<ipc::capnp::messages::Mining::IsInitialBlockDownloadParams, ipc::capnp::messages::Mining::IsInitialBlockDownloadResults>&>(capnp::Request<ipc::capnp::messages::Mining::IsInitialBlockDownloadParams, ipc::capnp::messages::Mining::IsInitialBlockDownloadResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::IsInitialBlockDownloadResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Response<ipc::capnp::messages::Mining::IsInitialBlockDownloadResults>&>(capnp::Response<ipc::capnp::messages::Mining::IsInitialBlockDownloadResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 2>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::IsInitialBlockDownloadResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 2>, capnp::Response<ipc::capnp::messages::Mining::IsInitialBlockDownloadResults>&>(capnp::Response<ipc::capnp::messages::Mining::IsInitialBlockDownloadResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::GetTipParams, ipc::capnp::messages::Mining::GetTipResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Request<ipc::capnp::messages::Mining::GetTipParams, ipc::capnp::messages::Mining::GetTipResults>&>(capnp::Request<ipc::capnp::messages::Mining::GetTipParams, ipc::capnp::messages::Mining::GetTipResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 22>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::GetTipParams, ipc::capnp::messages::Mining::GetTipResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 22>, capnp::Request<ipc::capnp::messages::Mining::GetTipParams, ipc::capnp::messages::Mining::GetTipResults>&>(capnp::Request<ipc::capnp::messages::Mining::GetTipParams, ipc::capnp::messages::Mining::GetTipResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::GetTipResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Response<ipc::capnp::messages::Mining::GetTipResults>&>(capnp::Response<ipc::capnp::messages::Mining::GetTipResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::common_fields::Hash, 19>, std::remove_reference<ipc::capnp::messages::BlockRef::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::common_fields::Hash, 19>, ipc::capnp::messages::BlockRef::Reader const&>(ipc::capnp::messages::BlockRef::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::common_fields::Height, 3>, std::remove_reference<ipc::capnp::messages::BlockRef::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::common_fields::Height, 3>, ipc::capnp::messages::BlockRef::Reader const&>(ipc::capnp::messages::BlockRef::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 22>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::GetTipResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 22>, capnp::Response<ipc::capnp::messages::Mining::GetTipResults>&>(capnp::Response<ipc::capnp::messages::Mining::GetTipResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Request<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>&>(capnp::Request<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::CurrentTip, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::CurrentTip, 17>, capnp::Request<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>&>(capnp::Request<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Timeout, 1>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Timeout, 1>, capnp::Request<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>&>(capnp::Request<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, capnp::Request<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>&>(capnp::Request<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::WaitTipChangedResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Response<ipc::capnp::messages::Mining::WaitTipChangedResults>&>(capnp::Response<ipc::capnp::messages::Mining::WaitTipChangedResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::CurrentTip, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::WaitTipChangedResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::CurrentTip, 17>, capnp::Response<ipc::capnp::messages::Mining::WaitTipChangedResults>&>(capnp::Response<ipc::capnp::messages::Mining::WaitTipChangedResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Timeout, 1>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::WaitTipChangedResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Timeout, 1>, capnp::Response<ipc::capnp::messages::Mining::WaitTipChangedResults>&>(capnp::Response<ipc::capnp::messages::Mining::WaitTipChangedResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::WaitTipChangedResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::WaitTipChangedResults>&>(capnp::Response<ipc::capnp::messages::Mining::WaitTipChangedResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::CreateNewBlockParams, ipc::capnp::messages::Mining::CreateNewBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Request<ipc::capnp::messages::Mining::CreateNewBlockParams, ipc::capnp::messages::Mining::CreateNewBlockResults>&>(capnp::Request<ipc::capnp::messages::Mining::CreateNewBlockParams, ipc::capnp::messages::Mining::CreateNewBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Options, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::CreateNewBlockParams, ipc::capnp::messages::Mining::CreateNewBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Options, 17>, capnp::Request<ipc::capnp::messages::Mining::CreateNewBlockParams, ipc::capnp::messages::Mining::CreateNewBlockResults>&>(capnp::Request<ipc::capnp::messages::Mining::CreateNewBlockParams, ipc::capnp::messages::Mining::CreateNewBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::UseMempool, 3>, std::remove_reference<ipc::capnp::messages::BlockCreateOptions::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::UseMempool, 3>, ipc::capnp::messages::BlockCreateOptions::Builder&>(ipc::capnp::messages::BlockCreateOptions::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::BlockReservedWeight, 3>, std::remove_reference<ipc::capnp::messages::BlockCreateOptions::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::BlockReservedWeight, 3>, ipc::capnp::messages::BlockCreateOptions::Builder&>(ipc::capnp::messages::BlockCreateOptions::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::CoinbaseOutputMaxAdditionalSigops, 3>, std::remove_reference<ipc::capnp::messages::BlockCreateOptions::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::CoinbaseOutputMaxAdditionalSigops, 3>, ipc::capnp::messages::BlockCreateOptions::Builder&>(ipc::capnp::messages::BlockCreateOptions::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Cooldown, 1>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::CreateNewBlockParams, ipc::capnp::messages::Mining::CreateNewBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Cooldown, 1>, capnp::Request<ipc::capnp::messages::Mining::CreateNewBlockParams, ipc::capnp::messages::Mining::CreateNewBlockResults>&>(capnp::Request<ipc::capnp::messages::Mining::CreateNewBlockParams, ipc::capnp::messages::Mining::CreateNewBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::CreateNewBlockParams, ipc::capnp::messages::Mining::CreateNewBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, capnp::Request<ipc::capnp::messages::Mining::CreateNewBlockParams, ipc::capnp::messages::Mining::CreateNewBlockResults>&>(capnp::Request<ipc::capnp::messages::Mining::CreateNewBlockParams, ipc::capnp::messages::Mining::CreateNewBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::CreateNewBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Response<ipc::capnp::messages::Mining::CreateNewBlockResults>&>(capnp::Response<ipc::capnp::messages::Mining::CreateNewBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Options, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::CreateNewBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Options, 17>, capnp::Response<ipc::capnp::messages::Mining::CreateNewBlockResults>&>(capnp::Response<ipc::capnp::messages::Mining::CreateNewBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Cooldown, 1>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::CreateNewBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Cooldown, 1>, capnp::Response<ipc::capnp::messages::Mining::CreateNewBlockResults>&>(capnp::Response<ipc::capnp::messages::Mining::CreateNewBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::CreateNewBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::CreateNewBlockResults>&>(capnp::Response<ipc::capnp::messages::Mining::CreateNewBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Request<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>&>(capnp::Request<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Block, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Block, 17>, capnp::Request<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>&>(capnp::Request<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Options, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Options, 17>, capnp::Request<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>&>(capnp::Request<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::CheckMerkleRoot, 3>, std::remove_reference<ipc::capnp::messages::BlockCheckOptions::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::CheckMerkleRoot, 3>, ipc::capnp::messages::BlockCheckOptions::Builder&>(ipc::capnp::messages::BlockCheckOptions::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::CheckPow, 3>, std::remove_reference<ipc::capnp::messages::BlockCheckOptions::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::CheckPow, 3>, ipc::capnp::messages::BlockCheckOptions::Builder&>(ipc::capnp::messages::BlockCheckOptions::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Reason, 18>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Reason, 18>, capnp::Request<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>&>(capnp::Request<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Debug, 18>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Debug, 18>, capnp::Request<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>&>(capnp::Request<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 2>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 2>, capnp::Request<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>&>(capnp::Request<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::CheckBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Response<ipc::capnp::messages::Mining::CheckBlockResults>&>(capnp::Response<ipc::capnp::messages::Mining::CheckBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Block, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::CheckBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Block, 17>, capnp::Response<ipc::capnp::messages::Mining::CheckBlockResults>&>(capnp::Response<ipc::capnp::messages::Mining::CheckBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Options, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::CheckBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Options, 17>, capnp::Response<ipc::capnp::messages::Mining::CheckBlockResults>&>(capnp::Response<ipc::capnp::messages::Mining::CheckBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Reason, 18>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::CheckBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Reason, 18>, capnp::Response<ipc::capnp::messages::Mining::CheckBlockResults>&>(capnp::Response<ipc::capnp::messages::Mining::CheckBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Debug, 18>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::CheckBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Debug, 18>, capnp::Response<ipc::capnp::messages::Mining::CheckBlockResults>&>(capnp::Response<ipc::capnp::messages::Mining::CheckBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 2>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::CheckBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 2>, capnp::Response<ipc::capnp::messages::Mining::CheckBlockResults>&>(capnp::Response<ipc::capnp::messages::Mining::CheckBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Request<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>&>(capnp::Request<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Block, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Block, 17>, capnp::Request<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>&>(capnp::Request<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Reason, 18>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Reason, 18>, capnp::Request<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>&>(capnp::Request<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Debug, 18>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Debug, 18>, capnp::Request<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>&>(capnp::Request<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 2>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 2>, capnp::Request<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>&>(capnp::Request<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::SubmitBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Response<ipc::capnp::messages::Mining::SubmitBlockResults>&>(capnp::Response<ipc::capnp::messages::Mining::SubmitBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Block, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::SubmitBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Block, 17>, capnp::Response<ipc::capnp::messages::Mining::SubmitBlockResults>&>(capnp::Response<ipc::capnp::messages::Mining::SubmitBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Reason, 18>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::SubmitBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Reason, 18>, capnp::Response<ipc::capnp::messages::Mining::SubmitBlockResults>&>(capnp::Response<ipc::capnp::messages::Mining::SubmitBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Debug, 18>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::SubmitBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Debug, 18>, capnp::Response<ipc::capnp::messages::Mining::SubmitBlockResults>&>(capnp::Response<ipc::capnp::messages::Mining::SubmitBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 2>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::SubmitBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 2>, capnp::Response<ipc::capnp::messages::Mining::SubmitBlockResults>&>(capnp::Response<ipc::capnp::messages::Mining::SubmitBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Request<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>&>(capnp::Request<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Txids, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Txids, 17>, capnp::Request<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>&>(capnp::Request<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, capnp::Request<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>&>(capnp::Request<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>&>(capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Txids, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Txids, 17>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>&>(capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>&>(capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Request<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>&>(capnp::Request<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Wtxids, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Wtxids, 17>, capnp::Request<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>&>(capnp::Request<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<capnp::Request<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, capnp::Request<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>&>(capnp::Request<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>&>(capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Wtxids, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Wtxids, 17>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>&>(capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>&>(capnp::Response<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::BlockTemplate::DestroyParams, ipc::capnp::messages::BlockTemplate::DestroyResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Request<ipc::capnp::messages::BlockTemplate::DestroyParams, ipc::capnp::messages::BlockTemplate::DestroyResults>&>(capnp::Request<ipc::capnp::messages::BlockTemplate::DestroyParams, ipc::capnp::messages::BlockTemplate::DestroyResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::BlockTemplate::DestroyResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Response<ipc::capnp::messages::BlockTemplate::DestroyResults>&>(capnp::Response<ipc::capnp::messages::BlockTemplate::DestroyResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::BlockTemplate::GetBlockHeaderParams, ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Request<ipc::capnp::messages::BlockTemplate::GetBlockHeaderParams, ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults>&>(capnp::Request<ipc::capnp::messages::BlockTemplate::GetBlockHeaderParams, ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<capnp::Request<ipc::capnp::messages::BlockTemplate::GetBlockHeaderParams, ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, capnp::Request<ipc::capnp::messages::BlockTemplate::GetBlockHeaderParams, ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults>&>(capnp::Request<ipc::capnp::messages::BlockTemplate::GetBlockHeaderParams, ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults>&>(capnp::Response<ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<capnp::Response<ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults>&>(capnp::Response<ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::BlockTemplate::GetBlockParams, ipc::capnp::messages::BlockTemplate::GetBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Request<ipc::capnp::messages::BlockTemplate::GetBlockParams, ipc::capnp::messages::BlockTemplate::GetBlockResults>&>(capnp::Request<ipc::capnp::messages::BlockTemplate::GetBlockParams, ipc::capnp::messages::BlockTemplate::GetBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<capnp::Request<ipc::capnp::messages::BlockTemplate::GetBlockParams, ipc::capnp::messages::BlockTemplate::GetBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, capnp::Request<ipc::capnp::messages::BlockTemplate::GetBlockParams, ipc::capnp::messages::BlockTemplate::GetBlockResults>&>(capnp::Request<ipc::capnp::messages::BlockTemplate::GetBlockParams, ipc::capnp::messages::BlockTemplate::GetBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::BlockTemplate::GetBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetBlockResults>&>(capnp::Response<ipc::capnp::messages::BlockTemplate::GetBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<capnp::Response<ipc::capnp::messages::BlockTemplate::GetBlockResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetBlockResults>&>(capnp::Response<ipc::capnp::messages::BlockTemplate::GetBlockResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::BlockTemplate::GetTxFeesParams, ipc::capnp::messages::BlockTemplate::GetTxFeesResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Request<ipc::capnp::messages::BlockTemplate::GetTxFeesParams, ipc::capnp::messages::BlockTemplate::GetTxFeesResults>&>(capnp::Request<ipc::capnp::messages::BlockTemplate::GetTxFeesParams, ipc::capnp::messages::BlockTemplate::GetTxFeesResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<capnp::Request<ipc::capnp::messages::BlockTemplate::GetTxFeesParams, ipc::capnp::messages::BlockTemplate::GetTxFeesResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, capnp::Request<ipc::capnp::messages::BlockTemplate::GetTxFeesParams, ipc::capnp::messages::BlockTemplate::GetTxFeesResults>&>(capnp::Request<ipc::capnp::messages::BlockTemplate::GetTxFeesParams, ipc::capnp::messages::BlockTemplate::GetTxFeesResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::BlockTemplate::GetTxFeesResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetTxFeesResults>&>(capnp::Response<ipc::capnp::messages::BlockTemplate::GetTxFeesResults>&)
Unexecuted instantiation: mp::ValueField<std::remove_reference<long&>::type> mp::Make<mp::ValueField, long&>(long&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<capnp::Response<ipc::capnp::messages::BlockTemplate::GetTxFeesResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetTxFeesResults>&>(capnp::Response<ipc::capnp::messages::BlockTemplate::GetTxFeesResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::BlockTemplate::GetTxSigopsParams, ipc::capnp::messages::BlockTemplate::GetTxSigopsResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Request<ipc::capnp::messages::BlockTemplate::GetTxSigopsParams, ipc::capnp::messages::BlockTemplate::GetTxSigopsResults>&>(capnp::Request<ipc::capnp::messages::BlockTemplate::GetTxSigopsParams, ipc::capnp::messages::BlockTemplate::GetTxSigopsResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<capnp::Request<ipc::capnp::messages::BlockTemplate::GetTxSigopsParams, ipc::capnp::messages::BlockTemplate::GetTxSigopsResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, capnp::Request<ipc::capnp::messages::BlockTemplate::GetTxSigopsParams, ipc::capnp::messages::BlockTemplate::GetTxSigopsResults>&>(capnp::Request<ipc::capnp::messages::BlockTemplate::GetTxSigopsParams, ipc::capnp::messages::BlockTemplate::GetTxSigopsResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::BlockTemplate::GetTxSigopsResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetTxSigopsResults>&>(capnp::Response<ipc::capnp::messages::BlockTemplate::GetTxSigopsResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<capnp::Response<ipc::capnp::messages::BlockTemplate::GetTxSigopsResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetTxSigopsResults>&>(capnp::Response<ipc::capnp::messages::BlockTemplate::GetTxSigopsResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::BlockTemplate::GetCoinbaseTxParams, ipc::capnp::messages::BlockTemplate::GetCoinbaseTxResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Request<ipc::capnp::messages::BlockTemplate::GetCoinbaseTxParams, ipc::capnp::messages::BlockTemplate::GetCoinbaseTxResults>&>(capnp::Request<ipc::capnp::messages::BlockTemplate::GetCoinbaseTxParams, ipc::capnp::messages::BlockTemplate::GetCoinbaseTxResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<capnp::Request<ipc::capnp::messages::BlockTemplate::GetCoinbaseTxParams, ipc::capnp::messages::BlockTemplate::GetCoinbaseTxResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, capnp::Request<ipc::capnp::messages::BlockTemplate::GetCoinbaseTxParams, ipc::capnp::messages::BlockTemplate::GetCoinbaseTxResults>&>(capnp::Request<ipc::capnp::messages::BlockTemplate::GetCoinbaseTxParams, ipc::capnp::messages::BlockTemplate::GetCoinbaseTxResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseTxResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseTxResults>&>(capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseTxResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Version, 3>, std::remove_reference<ipc::capnp::messages::CoinbaseTx::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Version, 3>, ipc::capnp::messages::CoinbaseTx::Reader const&>(ipc::capnp::messages::CoinbaseTx::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Sequence, 3>, std::remove_reference<ipc::capnp::messages::CoinbaseTx::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Sequence, 3>, ipc::capnp::messages::CoinbaseTx::Reader const&>(ipc::capnp::messages::CoinbaseTx::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::ScriptSigPrefix, 19>, std::remove_reference<ipc::capnp::messages::CoinbaseTx::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::ScriptSigPrefix, 19>, ipc::capnp::messages::CoinbaseTx::Reader const&>(ipc::capnp::messages::CoinbaseTx::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Witness, 19>, std::remove_reference<ipc::capnp::messages::CoinbaseTx::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Witness, 19>, ipc::capnp::messages::CoinbaseTx::Reader const&>(ipc::capnp::messages::CoinbaseTx::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::BlockRewardRemaining, 3>, std::remove_reference<ipc::capnp::messages::CoinbaseTx::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::BlockRewardRemaining, 3>, ipc::capnp::messages::CoinbaseTx::Reader const&>(ipc::capnp::messages::CoinbaseTx::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::RequiredOutputs, 19>, std::remove_reference<ipc::capnp::messages::CoinbaseTx::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::RequiredOutputs, 19>, ipc::capnp::messages::CoinbaseTx::Reader const&>(ipc::capnp::messages::CoinbaseTx::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::LockTime, 3>, std::remove_reference<ipc::capnp::messages::CoinbaseTx::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::LockTime, 3>, ipc::capnp::messages::CoinbaseTx::Reader const&>(ipc::capnp::messages::CoinbaseTx::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseTxResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseTxResults>&>(capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseTxResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathParams, ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Request<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathParams, ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>&>(capnp::Request<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathParams, ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<capnp::Request<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathParams, ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, capnp::Request<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathParams, ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>&>(capnp::Request<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathParams, ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>&>(capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>&>(capnp::Response<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Request<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&>(capnp::Request<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Version, 1>, std::remove_reference<capnp::Request<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Version, 1>, capnp::Request<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&>(capnp::Request<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Timestamp, 1>, std::remove_reference<capnp::Request<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Timestamp, 1>, capnp::Request<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&>(capnp::Request<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Nonce, 1>, std::remove_reference<capnp::Request<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Nonce, 1>, capnp::Request<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&>(capnp::Request<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Coinbase, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Coinbase, 17>, capnp::Request<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&>(capnp::Request<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 2>, std::remove_reference<capnp::Request<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 2>, capnp::Request<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&>(capnp::Request<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Response<ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&>(capnp::Response<ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Version, 1>, std::remove_reference<capnp::Response<ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Version, 1>, capnp::Response<ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&>(capnp::Response<ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Timestamp, 1>, std::remove_reference<capnp::Response<ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Timestamp, 1>, capnp::Response<ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&>(capnp::Response<ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Nonce, 1>, std::remove_reference<capnp::Response<ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Nonce, 1>, capnp::Response<ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&>(capnp::Response<ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Coinbase, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Coinbase, 17>, capnp::Response<ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&>(capnp::Response<ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 2>, std::remove_reference<capnp::Response<ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 2>, capnp::Response<ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&>(capnp::Response<ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::BlockTemplate::WaitNextParams, ipc::capnp::messages::BlockTemplate::WaitNextResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Request<ipc::capnp::messages::BlockTemplate::WaitNextParams, ipc::capnp::messages::BlockTemplate::WaitNextResults>&>(capnp::Request<ipc::capnp::messages::BlockTemplate::WaitNextParams, ipc::capnp::messages::BlockTemplate::WaitNextResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Options, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::BlockTemplate::WaitNextParams, ipc::capnp::messages::BlockTemplate::WaitNextResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Options, 17>, capnp::Request<ipc::capnp::messages::BlockTemplate::WaitNextParams, ipc::capnp::messages::BlockTemplate::WaitNextResults>&>(capnp::Request<ipc::capnp::messages::BlockTemplate::WaitNextParams, ipc::capnp::messages::BlockTemplate::WaitNextResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Timeout, 3>, std::remove_reference<ipc::capnp::messages::BlockWaitOptions::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Timeout, 3>, ipc::capnp::messages::BlockWaitOptions::Builder&>(ipc::capnp::messages::BlockWaitOptions::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::FeeThreshold, 3>, std::remove_reference<ipc::capnp::messages::BlockWaitOptions::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::FeeThreshold, 3>, ipc::capnp::messages::BlockWaitOptions::Builder&>(ipc::capnp::messages::BlockWaitOptions::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<capnp::Request<ipc::capnp::messages::BlockTemplate::WaitNextParams, ipc::capnp::messages::BlockTemplate::WaitNextResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, capnp::Request<ipc::capnp::messages::BlockTemplate::WaitNextParams, ipc::capnp::messages::BlockTemplate::WaitNextResults>&>(capnp::Request<ipc::capnp::messages::BlockTemplate::WaitNextParams, ipc::capnp::messages::BlockTemplate::WaitNextResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Context, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::BlockTemplate::WaitNextResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Context, 17>, capnp::Response<ipc::capnp::messages::BlockTemplate::WaitNextResults>&>(capnp::Response<ipc::capnp::messages::BlockTemplate::WaitNextResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Options, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::BlockTemplate::WaitNextResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Options, 17>, capnp::Response<ipc::capnp::messages::BlockTemplate::WaitNextResults>&>(capnp::Response<ipc::capnp::messages::BlockTemplate::WaitNextResults>&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<capnp::Response<ipc::capnp::messages::BlockTemplate::WaitNextResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::BlockTemplate::WaitNextResults>&>(capnp::Response<ipc::capnp::messages::BlockTemplate::WaitNextResults>&)
Unexecuted instantiation: mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 2>, std::remove_reference<mp::ServerCall>::type> mp::Make<mp::ServerRet, mp::Accessor<mp::mining_fields::Result, 2>, mp::ServerCall>(mp::ServerCall&&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 2>, std::remove_reference<ipc::capnp::messages::Mining::IsTestChainResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 2>, ipc::capnp::messages::Mining::IsTestChainResults::Builder&>(ipc::capnp::messages::Mining::IsTestChainResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 2>, std::remove_reference<ipc::capnp::messages::Mining::IsInitialBlockDownloadResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 2>, ipc::capnp::messages::Mining::IsInitialBlockDownloadResults::Builder&>(ipc::capnp::messages::Mining::IsInitialBlockDownloadResults::Builder&)
Unexecuted instantiation: mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 22>, std::remove_reference<mp::ServerCall>::type> mp::Make<mp::ServerRet, mp::Accessor<mp::mining_fields::Result, 22>, mp::ServerCall>(mp::ServerCall&&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::common_fields::Hash, 19>, std::remove_reference<ipc::capnp::messages::BlockRef::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::common_fields::Hash, 19>, ipc::capnp::messages::BlockRef::Builder&>(ipc::capnp::messages::BlockRef::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::common_fields::Height, 3>, std::remove_reference<ipc::capnp::messages::BlockRef::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::common_fields::Height, 3>, ipc::capnp::messages::BlockRef::Builder&>(ipc::capnp::messages::BlockRef::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 22>, std::remove_reference<ipc::capnp::messages::Mining::GetTipResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 22>, ipc::capnp::messages::Mining::GetTipResults::Builder&>(ipc::capnp::messages::Mining::GetTipResults::Builder&)
Unexecuted instantiation: mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<mp::ServerCall>::type> mp::Make<mp::ServerRet, mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall>(mp::ServerCall&&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::CurrentTip, 17>, std::remove_reference<ipc::capnp::messages::Mining::WaitTipChangedParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::CurrentTip, 17>, ipc::capnp::messages::Mining::WaitTipChangedParams::Reader const&>(ipc::capnp::messages::Mining::WaitTipChangedParams::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Timeout, 1>, std::remove_reference<ipc::capnp::messages::Mining::WaitTipChangedParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Timeout, 1>, ipc::capnp::messages::Mining::WaitTipChangedParams::Reader const&>(ipc::capnp::messages::Mining::WaitTipChangedParams::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<ipc::capnp::messages::Mining::WaitTipChangedResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, ipc::capnp::messages::Mining::WaitTipChangedResults::Builder&>(ipc::capnp::messages::Mining::WaitTipChangedResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Timeout, 1>, std::remove_reference<ipc::capnp::messages::Mining::WaitTipChangedResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Timeout, 1>, ipc::capnp::messages::Mining::WaitTipChangedResults::Builder&>(ipc::capnp::messages::Mining::WaitTipChangedResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::CurrentTip, 17>, std::remove_reference<ipc::capnp::messages::Mining::WaitTipChangedResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::CurrentTip, 17>, ipc::capnp::messages::Mining::WaitTipChangedResults::Builder&>(ipc::capnp::messages::Mining::WaitTipChangedResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::UseMempool, 3>, std::remove_reference<ipc::capnp::messages::BlockCreateOptions::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::UseMempool, 3>, ipc::capnp::messages::BlockCreateOptions::Reader const&>(ipc::capnp::messages::BlockCreateOptions::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::BlockReservedWeight, 3>, std::remove_reference<ipc::capnp::messages::BlockCreateOptions::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::BlockReservedWeight, 3>, ipc::capnp::messages::BlockCreateOptions::Reader const&>(ipc::capnp::messages::BlockCreateOptions::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::CoinbaseOutputMaxAdditionalSigops, 3>, std::remove_reference<ipc::capnp::messages::BlockCreateOptions::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::CoinbaseOutputMaxAdditionalSigops, 3>, ipc::capnp::messages::BlockCreateOptions::Reader const&>(ipc::capnp::messages::BlockCreateOptions::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Options, 17>, std::remove_reference<ipc::capnp::messages::Mining::CreateNewBlockParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Options, 17>, ipc::capnp::messages::Mining::CreateNewBlockParams::Reader const&>(ipc::capnp::messages::Mining::CreateNewBlockParams::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Cooldown, 1>, std::remove_reference<ipc::capnp::messages::Mining::CreateNewBlockParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Cooldown, 1>, ipc::capnp::messages::Mining::CreateNewBlockParams::Reader const&>(ipc::capnp::messages::Mining::CreateNewBlockParams::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<ipc::capnp::messages::Mining::CreateNewBlockResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, ipc::capnp::messages::Mining::CreateNewBlockResults::Builder&>(ipc::capnp::messages::Mining::CreateNewBlockResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Cooldown, 1>, std::remove_reference<ipc::capnp::messages::Mining::CreateNewBlockResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Cooldown, 1>, ipc::capnp::messages::Mining::CreateNewBlockResults::Builder&>(ipc::capnp::messages::Mining::CreateNewBlockResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Options, 17>, std::remove_reference<ipc::capnp::messages::Mining::CreateNewBlockResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Options, 17>, ipc::capnp::messages::Mining::CreateNewBlockResults::Builder&>(ipc::capnp::messages::Mining::CreateNewBlockResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Block, 17>, std::remove_reference<ipc::capnp::messages::Mining::CheckBlockParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Block, 17>, ipc::capnp::messages::Mining::CheckBlockParams::Reader const&>(ipc::capnp::messages::Mining::CheckBlockParams::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::CheckMerkleRoot, 3>, std::remove_reference<ipc::capnp::messages::BlockCheckOptions::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::CheckMerkleRoot, 3>, ipc::capnp::messages::BlockCheckOptions::Reader const&>(ipc::capnp::messages::BlockCheckOptions::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::CheckPow, 3>, std::remove_reference<ipc::capnp::messages::BlockCheckOptions::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::CheckPow, 3>, ipc::capnp::messages::BlockCheckOptions::Reader const&>(ipc::capnp::messages::BlockCheckOptions::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Options, 17>, std::remove_reference<ipc::capnp::messages::Mining::CheckBlockParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Options, 17>, ipc::capnp::messages::Mining::CheckBlockParams::Reader const&>(ipc::capnp::messages::Mining::CheckBlockParams::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Reason, 18>, std::remove_reference<ipc::capnp::messages::Mining::CheckBlockParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Reason, 18>, ipc::capnp::messages::Mining::CheckBlockParams::Reader const&>(ipc::capnp::messages::Mining::CheckBlockParams::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Debug, 18>, std::remove_reference<ipc::capnp::messages::Mining::CheckBlockParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Debug, 18>, ipc::capnp::messages::Mining::CheckBlockParams::Reader const&>(ipc::capnp::messages::Mining::CheckBlockParams::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 2>, std::remove_reference<ipc::capnp::messages::Mining::CheckBlockResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 2>, ipc::capnp::messages::Mining::CheckBlockResults::Builder&>(ipc::capnp::messages::Mining::CheckBlockResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Debug, 18>, std::remove_reference<ipc::capnp::messages::Mining::CheckBlockResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Debug, 18>, ipc::capnp::messages::Mining::CheckBlockResults::Builder&>(ipc::capnp::messages::Mining::CheckBlockResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Reason, 18>, std::remove_reference<ipc::capnp::messages::Mining::CheckBlockResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Reason, 18>, ipc::capnp::messages::Mining::CheckBlockResults::Builder&>(ipc::capnp::messages::Mining::CheckBlockResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Options, 17>, std::remove_reference<ipc::capnp::messages::Mining::CheckBlockResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Options, 17>, ipc::capnp::messages::Mining::CheckBlockResults::Builder&>(ipc::capnp::messages::Mining::CheckBlockResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Block, 17>, std::remove_reference<ipc::capnp::messages::Mining::CheckBlockResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Block, 17>, ipc::capnp::messages::Mining::CheckBlockResults::Builder&>(ipc::capnp::messages::Mining::CheckBlockResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Block, 17>, std::remove_reference<ipc::capnp::messages::Mining::SubmitBlockParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Block, 17>, ipc::capnp::messages::Mining::SubmitBlockParams::Reader const&>(ipc::capnp::messages::Mining::SubmitBlockParams::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Reason, 18>, std::remove_reference<ipc::capnp::messages::Mining::SubmitBlockParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Reason, 18>, ipc::capnp::messages::Mining::SubmitBlockParams::Reader const&>(ipc::capnp::messages::Mining::SubmitBlockParams::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Debug, 18>, std::remove_reference<ipc::capnp::messages::Mining::SubmitBlockParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Debug, 18>, ipc::capnp::messages::Mining::SubmitBlockParams::Reader const&>(ipc::capnp::messages::Mining::SubmitBlockParams::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 2>, std::remove_reference<ipc::capnp::messages::Mining::SubmitBlockResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 2>, ipc::capnp::messages::Mining::SubmitBlockResults::Builder&>(ipc::capnp::messages::Mining::SubmitBlockResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Debug, 18>, std::remove_reference<ipc::capnp::messages::Mining::SubmitBlockResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Debug, 18>, ipc::capnp::messages::Mining::SubmitBlockResults::Builder&>(ipc::capnp::messages::Mining::SubmitBlockResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Reason, 18>, std::remove_reference<ipc::capnp::messages::Mining::SubmitBlockResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Reason, 18>, ipc::capnp::messages::Mining::SubmitBlockResults::Builder&>(ipc::capnp::messages::Mining::SubmitBlockResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Block, 17>, std::remove_reference<ipc::capnp::messages::Mining::SubmitBlockResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Block, 17>, ipc::capnp::messages::Mining::SubmitBlockResults::Builder&>(ipc::capnp::messages::Mining::SubmitBlockResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Txids, 17>, std::remove_reference<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Txids, 17>, ipc::capnp::messages::Mining::GetTransactionsByTxIDParams::Reader const&>(ipc::capnp::messages::Mining::GetTransactionsByTxIDParams::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<ipc::capnp::messages::Mining::GetTransactionsByTxIDResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults::Builder&>(ipc::capnp::messages::Mining::GetTransactionsByTxIDResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Txids, 17>, std::remove_reference<ipc::capnp::messages::Mining::GetTransactionsByTxIDResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Txids, 17>, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults::Builder&>(ipc::capnp::messages::Mining::GetTransactionsByTxIDResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Wtxids, 17>, std::remove_reference<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Wtxids, 17>, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams::Reader const&>(ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults::Builder&>(ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Wtxids, 17>, std::remove_reference<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Wtxids, 17>, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults::Builder&>(ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults::Builder&>(ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<ipc::capnp::messages::BlockTemplate::GetBlockResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, ipc::capnp::messages::BlockTemplate::GetBlockResults::Builder&>(ipc::capnp::messages::BlockTemplate::GetBlockResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<ipc::capnp::messages::BlockTemplate::GetTxFeesResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, ipc::capnp::messages::BlockTemplate::GetTxFeesResults::Builder&>(ipc::capnp::messages::BlockTemplate::GetTxFeesResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<ipc::capnp::messages::BlockTemplate::GetTxSigopsResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, ipc::capnp::messages::BlockTemplate::GetTxSigopsResults::Builder&>(ipc::capnp::messages::BlockTemplate::GetTxSigopsResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Version, 3>, std::remove_reference<ipc::capnp::messages::CoinbaseTx::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Version, 3>, ipc::capnp::messages::CoinbaseTx::Builder&>(ipc::capnp::messages::CoinbaseTx::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Sequence, 3>, std::remove_reference<ipc::capnp::messages::CoinbaseTx::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Sequence, 3>, ipc::capnp::messages::CoinbaseTx::Builder&>(ipc::capnp::messages::CoinbaseTx::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::ScriptSigPrefix, 19>, std::remove_reference<ipc::capnp::messages::CoinbaseTx::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::ScriptSigPrefix, 19>, ipc::capnp::messages::CoinbaseTx::Builder&>(ipc::capnp::messages::CoinbaseTx::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Witness, 19>, std::remove_reference<ipc::capnp::messages::CoinbaseTx::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Witness, 19>, ipc::capnp::messages::CoinbaseTx::Builder&>(ipc::capnp::messages::CoinbaseTx::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::BlockRewardRemaining, 3>, std::remove_reference<ipc::capnp::messages::CoinbaseTx::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::BlockRewardRemaining, 3>, ipc::capnp::messages::CoinbaseTx::Builder&>(ipc::capnp::messages::CoinbaseTx::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::RequiredOutputs, 19>, std::remove_reference<ipc::capnp::messages::CoinbaseTx::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::RequiredOutputs, 19>, ipc::capnp::messages::CoinbaseTx::Builder&>(ipc::capnp::messages::CoinbaseTx::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::LockTime, 3>, std::remove_reference<ipc::capnp::messages::CoinbaseTx::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::LockTime, 3>, ipc::capnp::messages::CoinbaseTx::Builder&>(ipc::capnp::messages::CoinbaseTx::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<ipc::capnp::messages::BlockTemplate::GetCoinbaseTxResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, ipc::capnp::messages::BlockTemplate::GetCoinbaseTxResults::Builder&>(ipc::capnp::messages::BlockTemplate::GetCoinbaseTxResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults::Builder&>(ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Version, 1>, std::remove_reference<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Version, 1>, ipc::capnp::messages::BlockTemplate::SubmitSolutionParams::Reader const&>(ipc::capnp::messages::BlockTemplate::SubmitSolutionParams::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Timestamp, 1>, std::remove_reference<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Timestamp, 1>, ipc::capnp::messages::BlockTemplate::SubmitSolutionParams::Reader const&>(ipc::capnp::messages::BlockTemplate::SubmitSolutionParams::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Nonce, 1>, std::remove_reference<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Nonce, 1>, ipc::capnp::messages::BlockTemplate::SubmitSolutionParams::Reader const&>(ipc::capnp::messages::BlockTemplate::SubmitSolutionParams::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Coinbase, 17>, std::remove_reference<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Coinbase, 17>, ipc::capnp::messages::BlockTemplate::SubmitSolutionParams::Reader const&>(ipc::capnp::messages::BlockTemplate::SubmitSolutionParams::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 2>, std::remove_reference<ipc::capnp::messages::BlockTemplate::SubmitSolutionResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 2>, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults::Builder&>(ipc::capnp::messages::BlockTemplate::SubmitSolutionResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Coinbase, 17>, std::remove_reference<ipc::capnp::messages::BlockTemplate::SubmitSolutionResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Coinbase, 17>, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults::Builder&>(ipc::capnp::messages::BlockTemplate::SubmitSolutionResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Nonce, 1>, std::remove_reference<ipc::capnp::messages::BlockTemplate::SubmitSolutionResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Nonce, 1>, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults::Builder&>(ipc::capnp::messages::BlockTemplate::SubmitSolutionResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Timestamp, 1>, std::remove_reference<ipc::capnp::messages::BlockTemplate::SubmitSolutionResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Timestamp, 1>, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults::Builder&>(ipc::capnp::messages::BlockTemplate::SubmitSolutionResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Version, 1>, std::remove_reference<ipc::capnp::messages::BlockTemplate::SubmitSolutionResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Version, 1>, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults::Builder&>(ipc::capnp::messages::BlockTemplate::SubmitSolutionResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Timeout, 3>, std::remove_reference<ipc::capnp::messages::BlockWaitOptions::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Timeout, 3>, ipc::capnp::messages::BlockWaitOptions::Reader const&>(ipc::capnp::messages::BlockWaitOptions::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::FeeThreshold, 3>, std::remove_reference<ipc::capnp::messages::BlockWaitOptions::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::FeeThreshold, 3>, ipc::capnp::messages::BlockWaitOptions::Reader const&>(ipc::capnp::messages::BlockWaitOptions::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Options, 17>, std::remove_reference<ipc::capnp::messages::BlockTemplate::WaitNextParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Options, 17>, ipc::capnp::messages::BlockTemplate::WaitNextParams::Reader const&>(ipc::capnp::messages::BlockTemplate::WaitNextParams::Reader const&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, std::remove_reference<ipc::capnp::messages::BlockTemplate::WaitNextResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Result, 18>, ipc::capnp::messages::BlockTemplate::WaitNextResults::Builder&>(ipc::capnp::messages::BlockTemplate::WaitNextResults::Builder&)
Unexecuted instantiation: mp::StructField<mp::Accessor<mp::mining_fields::Options, 17>, std::remove_reference<ipc::capnp::messages::BlockTemplate::WaitNextResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::mining_fields::Options, 17>, ipc::capnp::messages::BlockTemplate::WaitNextResults::Builder&>(ipc::capnp::messages::BlockTemplate::WaitNextResults::Builder&)
mp::StructField<mp::Accessor<mp::rpc_fields::Context, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::rpc_fields::Context, 17>, capnp::Request<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>&>(capnp::Request<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>&)
Line
Count
Source
53
8
{
54
8
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
8
}
mp::StructField<mp::Accessor<mp::rpc_fields::Request, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::rpc_fields::Request, 17>, capnp::Request<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>&>(capnp::Request<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>&)
Line
Count
Source
53
8
{
54
8
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
8
}
mp::StructField<mp::Accessor<mp::rpc_fields::Uri, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::rpc_fields::Uri, 17>, capnp::Request<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>&>(capnp::Request<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>&)
Line
Count
Source
53
8
{
54
8
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
8
}
mp::StructField<mp::Accessor<mp::rpc_fields::User, 17>, std::remove_reference<capnp::Request<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::rpc_fields::User, 17>, capnp::Request<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>&>(capnp::Request<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>&)
Line
Count
Source
53
8
{
54
8
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
8
}
mp::StructField<mp::Accessor<mp::rpc_fields::Result, 18>, std::remove_reference<capnp::Request<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::rpc_fields::Result, 18>, capnp::Request<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>&>(capnp::Request<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>&)
Line
Count
Source
53
8
{
54
8
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
8
}
mp::StructField<mp::Accessor<mp::rpc_fields::Context, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::Rpc::ExecuteRpcResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::rpc_fields::Context, 17>, capnp::Response<ipc::capnp::messages::Rpc::ExecuteRpcResults>&>(capnp::Response<ipc::capnp::messages::Rpc::ExecuteRpcResults>&)
Line
Count
Source
53
4
{
54
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
4
}
mp::StructField<mp::Accessor<mp::rpc_fields::Request, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::Rpc::ExecuteRpcResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::rpc_fields::Request, 17>, capnp::Response<ipc::capnp::messages::Rpc::ExecuteRpcResults>&>(capnp::Response<ipc::capnp::messages::Rpc::ExecuteRpcResults>&)
Line
Count
Source
53
4
{
54
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
4
}
mp::StructField<mp::Accessor<mp::rpc_fields::Uri, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::Rpc::ExecuteRpcResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::rpc_fields::Uri, 17>, capnp::Response<ipc::capnp::messages::Rpc::ExecuteRpcResults>&>(capnp::Response<ipc::capnp::messages::Rpc::ExecuteRpcResults>&)
Line
Count
Source
53
4
{
54
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
4
}
mp::StructField<mp::Accessor<mp::rpc_fields::User, 17>, std::remove_reference<capnp::Response<ipc::capnp::messages::Rpc::ExecuteRpcResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::rpc_fields::User, 17>, capnp::Response<ipc::capnp::messages::Rpc::ExecuteRpcResults>&>(capnp::Response<ipc::capnp::messages::Rpc::ExecuteRpcResults>&)
Line
Count
Source
53
4
{
54
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
4
}
mp::StructField<mp::Accessor<mp::rpc_fields::Result, 18>, std::remove_reference<capnp::Response<ipc::capnp::messages::Rpc::ExecuteRpcResults>&>::type> mp::Make<mp::StructField, mp::Accessor<mp::rpc_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Rpc::ExecuteRpcResults>&>(capnp::Response<ipc::capnp::messages::Rpc::ExecuteRpcResults>&)
Line
Count
Source
53
4
{
54
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
4
}
mp::ServerRet<mp::Accessor<mp::rpc_fields::Result, 18>, std::remove_reference<mp::ServerCall>::type> mp::Make<mp::ServerRet, mp::Accessor<mp::rpc_fields::Result, 18>, mp::ServerCall>(mp::ServerCall&&)
Line
Count
Source
53
4
{
54
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
4
}
mp::StructField<mp::Accessor<mp::rpc_fields::Request, 17>, std::remove_reference<ipc::capnp::messages::Rpc::ExecuteRpcParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::rpc_fields::Request, 17>, ipc::capnp::messages::Rpc::ExecuteRpcParams::Reader const&>(ipc::capnp::messages::Rpc::ExecuteRpcParams::Reader const&)
Line
Count
Source
53
4
{
54
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
4
}
mp::StructField<mp::Accessor<mp::rpc_fields::Uri, 17>, std::remove_reference<ipc::capnp::messages::Rpc::ExecuteRpcParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::rpc_fields::Uri, 17>, ipc::capnp::messages::Rpc::ExecuteRpcParams::Reader const&>(ipc::capnp::messages::Rpc::ExecuteRpcParams::Reader const&)
Line
Count
Source
53
4
{
54
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
4
}
mp::StructField<mp::Accessor<mp::rpc_fields::User, 17>, std::remove_reference<ipc::capnp::messages::Rpc::ExecuteRpcParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::rpc_fields::User, 17>, ipc::capnp::messages::Rpc::ExecuteRpcParams::Reader const&>(ipc::capnp::messages::Rpc::ExecuteRpcParams::Reader const&)
Line
Count
Source
53
4
{
54
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
4
}
mp::StructField<mp::Accessor<mp::rpc_fields::Result, 18>, std::remove_reference<ipc::capnp::messages::Rpc::ExecuteRpcResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::rpc_fields::Result, 18>, ipc::capnp::messages::Rpc::ExecuteRpcResults::Builder&>(ipc::capnp::messages::Rpc::ExecuteRpcResults::Builder&)
Line
Count
Source
53
4
{
54
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
4
}
mp::StructField<mp::Accessor<mp::rpc_fields::User, 17>, std::remove_reference<ipc::capnp::messages::Rpc::ExecuteRpcResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::rpc_fields::User, 17>, ipc::capnp::messages::Rpc::ExecuteRpcResults::Builder&>(ipc::capnp::messages::Rpc::ExecuteRpcResults::Builder&)
Line
Count
Source
53
4
{
54
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
4
}
mp::StructField<mp::Accessor<mp::rpc_fields::Uri, 17>, std::remove_reference<ipc::capnp::messages::Rpc::ExecuteRpcResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::rpc_fields::Uri, 17>, ipc::capnp::messages::Rpc::ExecuteRpcResults::Builder&>(ipc::capnp::messages::Rpc::ExecuteRpcResults::Builder&)
Line
Count
Source
53
4
{
54
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
4
}
mp::StructField<mp::Accessor<mp::rpc_fields::Request, 17>, std::remove_reference<ipc::capnp::messages::Rpc::ExecuteRpcResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::rpc_fields::Request, 17>, ipc::capnp::messages::Rpc::ExecuteRpcResults::Builder&>(ipc::capnp::messages::Rpc::ExecuteRpcResults::Builder&)
Line
Count
Source
53
4
{
54
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
4
}
mp::ServerRet<mp::Accessor<mp::echo_fields::Result, 18>, std::remove_reference<mp::ServerCall>::type> mp::Make<mp::ServerRet, mp::Accessor<mp::echo_fields::Result, 18>, mp::ServerCall>(mp::ServerCall&&)
Line
Count
Source
53
6
{
54
6
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
6
}
mp::StructField<mp::Accessor<mp::echo_fields::Echo, 17>, std::remove_reference<ipc::capnp::messages::Echo::EchoParams::Reader const&>::type> mp::Make<mp::StructField, mp::Accessor<mp::echo_fields::Echo, 17>, ipc::capnp::messages::Echo::EchoParams::Reader const&>(ipc::capnp::messages::Echo::EchoParams::Reader const&)
Line
Count
Source
53
6
{
54
6
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
6
}
mp::StructField<mp::Accessor<mp::echo_fields::Result, 18>, std::remove_reference<ipc::capnp::messages::Echo::EchoResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::echo_fields::Result, 18>, ipc::capnp::messages::Echo::EchoResults::Builder&>(ipc::capnp::messages::Echo::EchoResults::Builder&)
Line
Count
Source
53
6
{
54
6
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
6
}
mp::StructField<mp::Accessor<mp::echo_fields::Echo, 17>, std::remove_reference<ipc::capnp::messages::Echo::EchoResults::Builder&>::type> mp::Make<mp::StructField, mp::Accessor<mp::echo_fields::Echo, 17>, ipc::capnp::messages::Echo::EchoResults::Builder&>(ipc::capnp::messages::Echo::EchoResults::Builder&)
Line
Count
Source
53
6
{
54
6
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
55
6
}
56
57
//! Type helper splitting a TypeList into two halves at position index.
58
//!
59
//! Example:
60
//!   is_same<TypeList<int, double>, Split<2, TypeList<int, double, float, bool>>::First>
61
//!   is_same<TypeList<float, bool>, Split<2, TypeList<int, double, float, bool>>::Second>
62
template <std::size_t index, typename List, typename _First = TypeList<>, bool done = index == 0>
63
struct Split;
64
65
//! Specialization of above (base case)
66
template <typename _Second, typename _First>
67
struct Split<0, _Second, _First, true>
68
{
69
    using First = _First;
70
    using Second = _Second;
71
};
72
73
//! Specialization of above (recursive case)
74
template <std::size_t index, typename Type, typename... _Second, typename... _First>
75
struct Split<index, TypeList<Type, _Second...>, TypeList<_First...>, false>
76
{
77
    using _Next = Split<index - 1, TypeList<_Second...>, TypeList<_First..., Type>>;
78
    using First = typename _Next::First;
79
    using Second = typename _Next::Second;
80
};
81
82
//! Type helper giving return type of a callable type.
83
template <typename Callable>
84
using ResultOf = decltype(std::declval<Callable>()());
85
86
//! Substitutue for std::remove_cvref_t
87
template <typename T>
88
using RemoveCvRef = std::remove_cv_t<std::remove_reference_t<T>>;
89
90
//! Type helper abbreviating std::decay.
91
template <typename T>
92
using Decay = std::decay_t<T>;
93
94
//! SFINAE helper, see using Require below.
95
template <typename SfinaeExpr, typename Result_>
96
struct _Require
97
{
98
    using Result = Result_;
99
};
100
101
//! SFINAE helper, basically the same as to C++17's void_t, but allowing types other than void to be returned.
102
template <typename SfinaeExpr, typename Result = void>
103
using Require = typename _Require<SfinaeExpr, Result>::Result;
104
105
//! Function parameter type for prioritizing overloaded function calls that
106
//! would otherwise be ambiguous.
107
//!
108
//! Example:
109
//!   auto foo(Priority<1>) -> std::enable_if<>;
110
//!   auto foo(Priority<0>) -> void;
111
//!
112
//!   foo(Priority<1>());   // Calls higher priority overload if enabled.
113
template <int priority>
114
struct Priority : Priority<priority - 1>
115
{
116
};
117
118
//! Specialization of above (base case)
119
template <>
120
struct Priority<0>
121
{
122
};
123
124
//! Return capnp type name with filename prefix removed.
125
template <typename T>
126
const char* TypeName()
127
148
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
148
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
148
    const char* short_name = strchr(display_name, ':');
136
148
    return short_name ? short_name + 1 : display_name;
137
148
}
char const* mp::TypeName<gen::FooInterface::AddParams>()
Line
Count
Source
127
2
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
2
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
2
    const char* short_name = strchr(display_name, ':');
136
2
    return short_name ? short_name + 1 : display_name;
137
2
}
char const* mp::TypeName<gen::FooInterface::AddResults>()
Line
Count
Source
127
2
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
2
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
2
    const char* short_name = strchr(display_name, ':');
136
2
    return short_name ? short_name + 1 : display_name;
137
2
}
char const* mp::TypeName<gen::FooInterface::PassOutPointParams>()
Line
Count
Source
127
2
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
2
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
2
    const char* short_name = strchr(display_name, ':');
136
2
    return short_name ? short_name + 1 : display_name;
137
2
}
char const* mp::TypeName<gen::FooInterface::PassOutPointResults>()
Line
Count
Source
127
2
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
2
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
2
    const char* short_name = strchr(display_name, ':');
136
2
    return short_name ? short_name + 1 : display_name;
137
2
}
char const* mp::TypeName<gen::FooInterface::PassUniValueParams>()
Line
Count
Source
127
2
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
2
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
2
    const char* short_name = strchr(display_name, ':');
136
2
    return short_name ? short_name + 1 : display_name;
137
2
}
char const* mp::TypeName<gen::FooInterface::PassUniValueResults>()
Line
Count
Source
127
2
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
2
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
2
    const char* short_name = strchr(display_name, ':');
136
2
    return short_name ? short_name + 1 : display_name;
137
2
}
char const* mp::TypeName<gen::FooInterface::PassTransactionParams>()
Line
Count
Source
127
2
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
2
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
2
    const char* short_name = strchr(display_name, ':');
136
2
    return short_name ? short_name + 1 : display_name;
137
2
}
char const* mp::TypeName<gen::FooInterface::PassTransactionResults>()
Line
Count
Source
127
2
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
2
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
2
    const char* short_name = strchr(display_name, ':');
136
2
    return short_name ? short_name + 1 : display_name;
137
2
}
char const* mp::TypeName<gen::FooInterface::PassVectorCharParams>()
Line
Count
Source
127
2
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
2
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
2
    const char* short_name = strchr(display_name, ':');
136
2
    return short_name ? short_name + 1 : display_name;
137
2
}
char const* mp::TypeName<gen::FooInterface::PassVectorCharResults>()
Line
Count
Source
127
2
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
2
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
2
    const char* short_name = strchr(display_name, ':');
136
2
    return short_name ? short_name + 1 : display_name;
137
2
}
char const* mp::TypeName<gen::FooInterface::PassScriptParams>()
Line
Count
Source
127
2
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
2
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
2
    const char* short_name = strchr(display_name, ':');
136
2
    return short_name ? short_name + 1 : display_name;
137
2
}
char const* mp::TypeName<gen::FooInterface::PassScriptResults>()
Line
Count
Source
127
2
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
2
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
2
    const char* short_name = strchr(display_name, ':');
136
2
    return short_name ? short_name + 1 : display_name;
137
2
}
char const* mp::TypeName<gen::FooInterface::PassTransactionsParams>()
Line
Count
Source
127
2
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
2
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
2
    const char* short_name = strchr(display_name, ':');
136
2
    return short_name ? short_name + 1 : display_name;
137
2
}
char const* mp::TypeName<gen::FooInterface::PassTransactionsResults>()
Line
Count
Source
127
2
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
2
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
2
    const char* short_name = strchr(display_name, ':');
136
2
    return short_name ? short_name + 1 : display_name;
137
2
}
char const* mp::TypeName<ipc::capnp::messages::Init::ConstructParams>()
Line
Count
Source
127
16
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
16
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
16
    const char* short_name = strchr(display_name, ':');
136
16
    return short_name ? short_name + 1 : display_name;
137
16
}
char const* mp::TypeName<ipc::capnp::messages::Init::ConstructResults>()
Line
Count
Source
127
16
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
16
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
16
    const char* short_name = strchr(display_name, ':');
136
16
    return short_name ? short_name + 1 : display_name;
137
16
}
char const* mp::TypeName<ipc::capnp::messages::Init::MakeEchoParams>()
Line
Count
Source
127
12
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
12
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
12
    const char* short_name = strchr(display_name, ':');
136
12
    return short_name ? short_name + 1 : display_name;
137
12
}
char const* mp::TypeName<ipc::capnp::messages::Init::MakeEchoResults>()
Line
Count
Source
127
12
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
12
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
12
    const char* short_name = strchr(display_name, ':');
136
12
    return short_name ? short_name + 1 : display_name;
137
12
}
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::Init::MakeMiningOld2Params>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::Init::MakeMiningOld2Results>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::Init::MakeMiningParams>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::Init::MakeMiningResults>()
char const* mp::TypeName<ipc::capnp::messages::Init::MakeRpcParams>()
Line
Count
Source
127
4
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
4
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
4
    const char* short_name = strchr(display_name, ':');
136
4
    return short_name ? short_name + 1 : display_name;
137
4
}
char const* mp::TypeName<ipc::capnp::messages::Init::MakeRpcResults>()
Line
Count
Source
127
4
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
4
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
4
    const char* short_name = strchr(display_name, ':');
136
4
    return short_name ? short_name + 1 : display_name;
137
4
}
char const* mp::TypeName<ipc::capnp::messages::Echo::DestroyParams>()
Line
Count
Source
127
12
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
12
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
12
    const char* short_name = strchr(display_name, ':');
136
12
    return short_name ? short_name + 1 : display_name;
137
12
}
char const* mp::TypeName<ipc::capnp::messages::Echo::DestroyResults>()
Line
Count
Source
127
12
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
12
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
12
    const char* short_name = strchr(display_name, ':');
136
12
    return short_name ? short_name + 1 : display_name;
137
12
}
char const* mp::TypeName<ipc::capnp::messages::Echo::EchoParams>()
Line
Count
Source
127
12
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
12
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
12
    const char* short_name = strchr(display_name, ':');
136
12
    return short_name ? short_name + 1 : display_name;
137
12
}
char const* mp::TypeName<ipc::capnp::messages::Echo::EchoResults>()
Line
Count
Source
127
12
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
12
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
12
    const char* short_name = strchr(display_name, ':');
136
12
    return short_name ? short_name + 1 : display_name;
137
12
}
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::Mining::IsTestChainParams>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::Mining::IsTestChainResults>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::Mining::IsInitialBlockDownloadParams>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::Mining::IsInitialBlockDownloadResults>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::Mining::GetTipParams>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::Mining::GetTipResults>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::Mining::WaitTipChangedParams>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::Mining::WaitTipChangedResults>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::Mining::CreateNewBlockParams>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::Mining::CreateNewBlockResults>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::Mining::CheckBlockParams>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::Mining::CheckBlockResults>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::Mining::InterruptParams>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::Mining::InterruptResults>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::Mining::SubmitBlockParams>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::Mining::SubmitBlockResults>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::BlockTemplate::DestroyParams>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::BlockTemplate::DestroyResults>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::BlockTemplate::GetBlockHeaderParams>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::BlockTemplate::GetBlockParams>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::BlockTemplate::GetBlockResults>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::BlockTemplate::GetTxFeesParams>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::BlockTemplate::GetTxFeesResults>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::BlockTemplate::GetTxSigopsParams>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::BlockTemplate::GetTxSigopsResults>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::BlockTemplate::GetCoinbaseTxParams>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::BlockTemplate::GetCoinbaseTxResults>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathParams>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::BlockTemplate::WaitNextParams>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::BlockTemplate::WaitNextResults>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::BlockTemplate::InterruptWaitParams>()
Unexecuted instantiation: char const* mp::TypeName<ipc::capnp::messages::BlockTemplate::InterruptWaitResults>()
char const* mp::TypeName<ipc::capnp::messages::Rpc::ExecuteRpcParams>()
Line
Count
Source
127
4
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
4
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
4
    const char* short_name = strchr(display_name, ':');
136
4
    return short_name ? short_name + 1 : display_name;
137
4
}
char const* mp::TypeName<ipc::capnp::messages::Rpc::ExecuteRpcResults>()
Line
Count
Source
127
4
{
128
    // DisplayName string looks like
129
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
130
    // This discards the part of the string before the first ':' character.
131
    // Another alternative would be to use the displayNamePrefixLength field,
132
    // but this discards everything before the last '.' character, throwing away
133
    // the object name, which is useful.
134
4
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
135
4
    const char* short_name = strchr(display_name, ':');
136
4
    return short_name ? short_name + 1 : display_name;
137
4
}
138
139
//! Convenient wrapper around std::variant<T*, T>
140
template <typename T>
141
struct PtrOrValue {
142
    std::variant<T*, T> data;
143
144
    template <typename... Args>
145
666
    PtrOrValue(T* ptr, Args&&... args) : data(ptr ? ptr : std::variant<T*, T>{std::in_place_type<T>, std::forward<Args>(args)...}) {}
146
147
675
    T& operator*() { return data.index() ? std::get<T>(data) : *std::get<T*>(data); }
148
675
    T* operator->() { return &**this; }
149
    T& operator*() const { return data.index() ? std::get<T>(data) : *std::get<T*>(data); }
150
    T* operator->() const { return &**this; }
151
};
152
153
// Annotated mutex and lock class (https://clang.llvm.org/docs/ThreadSafetyAnalysis.html)
154
#if defined(__clang__) && (!defined(SWIG))
155
#define MP_TSA(x)   __attribute__((x))
156
#else
157
#define MP_TSA(x)   // no-op
158
#endif
159
160
#define MP_CAPABILITY(x)        MP_TSA(capability(x))
161
#define MP_SCOPED_CAPABILITY    MP_TSA(scoped_lockable)
162
#define MP_REQUIRES(x)          MP_TSA(requires_capability(x))
163
#define MP_ACQUIRE(...)         MP_TSA(acquire_capability(__VA_ARGS__))
164
#define MP_RELEASE(...)         MP_TSA(release_capability(__VA_ARGS__))
165
#define MP_ASSERT_CAPABILITY(x) MP_TSA(assert_capability(x))
166
#define MP_GUARDED_BY(x)        MP_TSA(guarded_by(x))
167
#define MP_NO_TSA               MP_TSA(no_thread_safety_analysis)
168
169
class MP_CAPABILITY("mutex") Mutex {
170
public:
171
0
    void lock() MP_ACQUIRE() { m_mutex.lock(); }
172
0
    void unlock() MP_RELEASE() { m_mutex.unlock(); }
173
174
    std::mutex m_mutex;
175
};
176
177
class MP_SCOPED_CAPABILITY Lock {
178
public:
179
1.19k
    explicit Lock(Mutex& m) MP_ACQUIRE(m) : m_lock(m.m_mutex) {}
180
1.19k
    ~Lock() MP_RELEASE() = default;
181
433
    void unlock() MP_RELEASE() { m_lock.unlock(); }
182
426
    void lock() MP_ACQUIRE() { m_lock.lock(); }
183
    void assert_locked(Mutex& mutex) MP_ASSERT_CAPABILITY() MP_ASSERT_CAPABILITY(mutex)
184
666
    {
185
666
        assert(m_lock.mutex() == &mutex.m_mutex);
186
666
        assert(m_lock);
187
666
    }
188
189
    std::unique_lock<std::mutex> m_lock;
190
};
191
192
template<typename T>
193
struct GuardedRef
194
{
195
    Mutex& mutex;
196
    T& ref MP_GUARDED_BY(mutex);
197
};
198
199
// CTAD for Clang 16: GuardedRef{mutex, x} -> GuardedRef<decltype(x)>
200
template <class U>
201
GuardedRef(Mutex&, U&) -> GuardedRef<U>;
202
203
//! Analog to std::lock_guard that unlocks instead of locks.
204
template <typename Lock>
205
struct UnlockGuard
206
{
207
425
    UnlockGuard(Lock& lock) : m_lock(lock) { m_lock.unlock(); }
208
425
    ~UnlockGuard() { m_lock.lock(); }
209
    Lock& m_lock;
210
};
211
212
template <typename Lock, typename Callback>
213
void Unlock(Lock& lock, Callback&& callback)
214
425
{
215
425
    const UnlockGuard<Lock> unlock(lock);
216
425
    callback();
217
425
}
void mp::Unlock<mp::Lock, kj::Function<void ()>&>(mp::Lock&, kj::Function<void ()>&)
Line
Count
Source
214
208
{
215
208
    const UnlockGuard<Lock> unlock(lock);
216
208
    callback();
217
208
}
void mp::Unlock<mp::Lock, std::function<void ()>&>(mp::Lock&, std::function<void ()>&)
Line
Count
Source
214
20
{
215
20
    const UnlockGuard<Lock> unlock(lock);
216
20
    callback();
217
20
}
proxy.cpp:void mp::Unlock<mp::Lock, mp::EventLoop::post(kj::Function<void ()>)::$_1>(mp::Lock&, mp::EventLoop::post(kj::Function<void ()>)::$_1&&)
Line
Count
Source
214
182
{
215
182
    const UnlockGuard<Lock> unlock(lock);
216
182
    callback();
217
182
}
void mp::Unlock<mp::Lock, std::function<void ()> const&>(mp::Lock&, std::function<void ()> const&)
Line
Count
Source
214
15
{
215
15
    const UnlockGuard<Lock> unlock(lock);
216
15
    callback();
217
15
}
218
219
//! Invoke a function and run a follow-up action before returning the original
220
//! result.
221
//!
222
//! This can be used similarly to KJ_DEFER to run cleanup code, but works better
223
//! if the cleanup function can throw because it avoids clang bug
224
//! https://github.com/llvm/llvm-project/issues/12658 which skips calling
225
//! destructors in that case and can lead to memory leaks. Also, if both
226
//! functions throw, this lets one exception take precedence instead of
227
//! terminating due to having two active exceptions.
228
template <typename Fn, typename After>
229
decltype(auto) TryFinally(Fn&& fn, After&& after)
230
37
{
231
37
    bool success{false};
232
37
    using R = std::invoke_result_t<Fn>;
233
37
    try {
234
37
        if constexpr (std::is_void_v<R>) {
235
10
            std::forward<Fn>(fn)();
236
10
            success = true;
237
10
            std::forward<After>(after)();
238
10
            return;
239
27
        } else {
240
27
            decltype(auto) result = std::forward<Fn>(fn)();
241
27
            success = true;
242
27
            std::forward<After>(after)();
243
27
            return result;
244
27
        }
245
37
    } catch (...) {
246
0
        if (!success) std::forward<After>(after)();
247
0
        throw;
248
0
    }
249
37
}
decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::AddParams, gen::FooInterface::AddResults>>, int, int>(mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::AddParams, gen::FooInterface::AddResults>>&, mp::TypeList<>, int&&, int&&) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::AddParams, gen::FooInterface::AddResults>>, int, int>(mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::AddParams, gen::FooInterface::AddResults>>&, mp::TypeList<>, int&&, int&&) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::AddParams, gen::FooInterface::AddResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::AddParams, gen::FooInterface::AddResults>>, int, int>(mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::AddParams, gen::FooInterface::AddResults>>&, mp::TypeList<>, int&&, int&&) const::'lambda0'()&&)
Line
Count
Source
230
1
{
231
1
    bool success{false};
232
1
    using R = std::invoke_result_t<Fn>;
233
1
    try {
234
        if constexpr (std::is_void_v<R>) {
235
            std::forward<Fn>(fn)();
236
            success = true;
237
            std::forward<After>(after)();
238
            return;
239
1
        } else {
240
1
            decltype(auto) result = std::forward<Fn>(fn)();
241
1
            success = true;
242
1
            std::forward<After>(after)();
243
1
            return result;
244
1
        }
245
1
    } catch (...) {
246
0
        if (!success) std::forward<After>(after)();
247
0
        throw;
248
0
    }
249
1
}
decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassOutPointParams, gen::FooInterface::PassOutPointResults>>, COutPoint>(mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassOutPointParams, gen::FooInterface::PassOutPointResults>>&, mp::TypeList<>, COutPoint&&) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassOutPointParams, gen::FooInterface::PassOutPointResults>>, COutPoint>(mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassOutPointParams, gen::FooInterface::PassOutPointResults>>&, mp::TypeList<>, COutPoint&&) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassOutPointParams, gen::FooInterface::PassOutPointResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassOutPointParams, gen::FooInterface::PassOutPointResults>>, COutPoint>(mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassOutPointParams, gen::FooInterface::PassOutPointResults>>&, mp::TypeList<>, COutPoint&&) const::'lambda0'()&&)
Line
Count
Source
230
1
{
231
1
    bool success{false};
232
1
    using R = std::invoke_result_t<Fn>;
233
1
    try {
234
        if constexpr (std::is_void_v<R>) {
235
            std::forward<Fn>(fn)();
236
            success = true;
237
            std::forward<After>(after)();
238
            return;
239
1
        } else {
240
1
            decltype(auto) result = std::forward<Fn>(fn)();
241
1
            success = true;
242
1
            std::forward<After>(after)();
243
1
            return result;
244
1
        }
245
1
    } catch (...) {
246
0
        if (!success) std::forward<After>(after)();
247
0
        throw;
248
0
    }
249
1
}
decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassUniValueParams, gen::FooInterface::PassUniValueResults>>, UniValue>(mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassUniValueParams, gen::FooInterface::PassUniValueResults>>&, mp::TypeList<>, UniValue&&) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassUniValueParams, gen::FooInterface::PassUniValueResults>>, UniValue>(mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassUniValueParams, gen::FooInterface::PassUniValueResults>>&, mp::TypeList<>, UniValue&&) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassUniValueParams, gen::FooInterface::PassUniValueResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassUniValueParams, gen::FooInterface::PassUniValueResults>>, UniValue>(mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassUniValueParams, gen::FooInterface::PassUniValueResults>>&, mp::TypeList<>, UniValue&&) const::'lambda0'()&&)
Line
Count
Source
230
1
{
231
1
    bool success{false};
232
1
    using R = std::invoke_result_t<Fn>;
233
1
    try {
234
        if constexpr (std::is_void_v<R>) {
235
            std::forward<Fn>(fn)();
236
            success = true;
237
            std::forward<After>(after)();
238
            return;
239
1
        } else {
240
1
            decltype(auto) result = std::forward<Fn>(fn)();
241
1
            success = true;
242
1
            std::forward<After>(after)();
243
1
            return result;
244
1
        }
245
1
    } catch (...) {
246
0
        if (!success) std::forward<After>(after)();
247
0
        throw;
248
0
    }
249
1
}
decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionParams, gen::FooInterface::PassTransactionResults>>, std::shared_ptr<CTransaction const>>(mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionParams, gen::FooInterface::PassTransactionResults>>&, mp::TypeList<>, std::shared_ptr<CTransaction const>&&) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionParams, gen::FooInterface::PassTransactionResults>>, std::shared_ptr<CTransaction const>>(mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionParams, gen::FooInterface::PassTransactionResults>>&, mp::TypeList<>, std::shared_ptr<CTransaction const>&&) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionParams, gen::FooInterface::PassTransactionResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionParams, gen::FooInterface::PassTransactionResults>>, std::shared_ptr<CTransaction const>>(mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionParams, gen::FooInterface::PassTransactionResults>>&, mp::TypeList<>, std::shared_ptr<CTransaction const>&&) const::'lambda0'()&&)
Line
Count
Source
230
1
{
231
1
    bool success{false};
232
1
    using R = std::invoke_result_t<Fn>;
233
1
    try {
234
        if constexpr (std::is_void_v<R>) {
235
            std::forward<Fn>(fn)();
236
            success = true;
237
            std::forward<After>(after)();
238
            return;
239
1
        } else {
240
1
            decltype(auto) result = std::forward<Fn>(fn)();
241
1
            success = true;
242
1
            std::forward<After>(after)();
243
1
            return result;
244
1
        }
245
1
    } catch (...) {
246
0
        if (!success) std::forward<After>(after)();
247
0
        throw;
248
0
    }
249
1
}
decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassVectorCharParams, gen::FooInterface::PassVectorCharResults>>, std::vector<char, std::allocator<char>>>(mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassVectorCharParams, gen::FooInterface::PassVectorCharResults>>&, mp::TypeList<>, std::vector<char, std::allocator<char>>&&) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassVectorCharParams, gen::FooInterface::PassVectorCharResults>>, std::vector<char, std::allocator<char>>>(mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassVectorCharParams, gen::FooInterface::PassVectorCharResults>>&, mp::TypeList<>, std::vector<char, std::allocator<char>>&&) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassVectorCharParams, gen::FooInterface::PassVectorCharResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassVectorCharParams, gen::FooInterface::PassVectorCharResults>>, std::vector<char, std::allocator<char>>>(mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassVectorCharParams, gen::FooInterface::PassVectorCharResults>>&, mp::TypeList<>, std::vector<char, std::allocator<char>>&&) const::'lambda0'()&&)
Line
Count
Source
230
1
{
231
1
    bool success{false};
232
1
    using R = std::invoke_result_t<Fn>;
233
1
    try {
234
        if constexpr (std::is_void_v<R>) {
235
            std::forward<Fn>(fn)();
236
            success = true;
237
            std::forward<After>(after)();
238
            return;
239
1
        } else {
240
1
            decltype(auto) result = std::forward<Fn>(fn)();
241
1
            success = true;
242
1
            std::forward<After>(after)();
243
1
            return result;
244
1
        }
245
1
    } catch (...) {
246
0
        if (!success) std::forward<After>(after)();
247
0
        throw;
248
0
    }
249
1
}
decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassScriptParams, gen::FooInterface::PassScriptResults>>, CScript>(mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassScriptParams, gen::FooInterface::PassScriptResults>>&, mp::TypeList<>, CScript&&) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassScriptParams, gen::FooInterface::PassScriptResults>>, CScript>(mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassScriptParams, gen::FooInterface::PassScriptResults>>&, mp::TypeList<>, CScript&&) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassScriptParams, gen::FooInterface::PassScriptResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassScriptParams, gen::FooInterface::PassScriptResults>>, CScript>(mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassScriptParams, gen::FooInterface::PassScriptResults>>&, mp::TypeList<>, CScript&&) const::'lambda0'()&&)
Line
Count
Source
230
1
{
231
1
    bool success{false};
232
1
    using R = std::invoke_result_t<Fn>;
233
1
    try {
234
        if constexpr (std::is_void_v<R>) {
235
            std::forward<Fn>(fn)();
236
            success = true;
237
            std::forward<After>(after)();
238
            return;
239
1
        } else {
240
1
            decltype(auto) result = std::forward<Fn>(fn)();
241
1
            success = true;
242
1
            std::forward<After>(after)();
243
1
            return result;
244
1
        }
245
1
    } catch (...) {
246
0
        if (!success) std::forward<After>(after)();
247
0
        throw;
248
0
    }
249
1
}
decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionsParams, gen::FooInterface::PassTransactionsResults>>, 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::TypeList<>, std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>&&) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionsParams, gen::FooInterface::PassTransactionsResults>>, 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::TypeList<>, std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>&&) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionsParams, gen::FooInterface::PassTransactionsResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<gen::FooInterface>, capnp::CallContext<gen::FooInterface::PassTransactionsParams, gen::FooInterface::PassTransactionsResults>>, 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::TypeList<>, std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const>>>&&) const::'lambda0'()&&)
Line
Count
Source
230
1
{
231
1
    bool success{false};
232
1
    using R = std::invoke_result_t<Fn>;
233
1
    try {
234
        if constexpr (std::is_void_v<R>) {
235
            std::forward<Fn>(fn)();
236
            success = true;
237
            std::forward<After>(after)();
238
            return;
239
1
        } else {
240
1
            decltype(auto) result = std::forward<Fn>(fn)();
241
1
            success = true;
242
1
            std::forward<After>(after)();
243
1
            return result;
244
1
        }
245
1
    } catch (...) {
246
0
        if (!success) std::forward<After>(after)();
247
0
        throw;
248
0
    }
249
1
}
decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::ConstructParams, ipc::capnp::messages::Init::ConstructResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::ConstructParams, ipc::capnp::messages::Init::ConstructResults>>&, mp::TypeList<>) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::ConstructParams, ipc::capnp::messages::Init::ConstructResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::ConstructParams, ipc::capnp::messages::Init::ConstructResults>>&, mp::TypeList<>) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::ConstructParams, ipc::capnp::messages::Init::ConstructResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::ConstructParams, ipc::capnp::messages::Init::ConstructResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::ConstructParams, ipc::capnp::messages::Init::ConstructResults>>&, mp::TypeList<>) const::'lambda0'()&&)
Line
Count
Source
230
10
{
231
10
    bool success{false};
232
10
    using R = std::invoke_result_t<Fn>;
233
10
    try {
234
10
        if constexpr (std::is_void_v<R>) {
235
10
            std::forward<Fn>(fn)();
236
10
            success = true;
237
10
            std::forward<After>(after)();
238
10
            return;
239
        } else {
240
            decltype(auto) result = std::forward<Fn>(fn)();
241
            success = true;
242
            std::forward<After>(after)();
243
            return result;
244
        }
245
10
    } catch (...) {
246
0
        if (!success) std::forward<After>(after)();
247
0
        throw;
248
0
    }
249
10
}
decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeEchoParams, ipc::capnp::messages::Init::MakeEchoResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeEchoParams, ipc::capnp::messages::Init::MakeEchoResults>>&, mp::TypeList<>) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeEchoParams, ipc::capnp::messages::Init::MakeEchoResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeEchoParams, ipc::capnp::messages::Init::MakeEchoResults>>&, mp::TypeList<>) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeEchoParams, ipc::capnp::messages::Init::MakeEchoResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeEchoParams, ipc::capnp::messages::Init::MakeEchoResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeEchoParams, ipc::capnp::messages::Init::MakeEchoResults>>&, mp::TypeList<>) const::'lambda0'()&&)
Line
Count
Source
230
6
{
231
6
    bool success{false};
232
6
    using R = std::invoke_result_t<Fn>;
233
6
    try {
234
        if constexpr (std::is_void_v<R>) {
235
            std::forward<Fn>(fn)();
236
            success = true;
237
            std::forward<After>(after)();
238
            return;
239
6
        } else {
240
6
            decltype(auto) result = std::forward<Fn>(fn)();
241
6
            success = true;
242
6
            std::forward<After>(after)();
243
6
            return result;
244
6
        }
245
6
    } catch (...) {
246
0
        if (!success) std::forward<After>(after)();
247
0
        throw;
248
0
    }
249
6
}
Unexecuted instantiation: decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeMiningOld2Params, ipc::capnp::messages::Init::MakeMiningOld2Results>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeMiningOld2Params, ipc::capnp::messages::Init::MakeMiningOld2Results>>&, mp::TypeList<>) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeMiningOld2Params, ipc::capnp::messages::Init::MakeMiningOld2Results>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeMiningOld2Params, ipc::capnp::messages::Init::MakeMiningOld2Results>>&, mp::TypeList<>) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeMiningOld2Params, ipc::capnp::messages::Init::MakeMiningOld2Results>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeMiningOld2Params, ipc::capnp::messages::Init::MakeMiningOld2Results>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeMiningOld2Params, ipc::capnp::messages::Init::MakeMiningOld2Results>>&, mp::TypeList<>) const::'lambda0'()&&)
Unexecuted instantiation: decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeMiningParams, ipc::capnp::messages::Init::MakeMiningResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeMiningParams, ipc::capnp::messages::Init::MakeMiningResults>>&, mp::TypeList<>) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeMiningParams, ipc::capnp::messages::Init::MakeMiningResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeMiningParams, ipc::capnp::messages::Init::MakeMiningResults>>&, mp::TypeList<>) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeMiningParams, ipc::capnp::messages::Init::MakeMiningResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeMiningParams, ipc::capnp::messages::Init::MakeMiningResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeMiningParams, ipc::capnp::messages::Init::MakeMiningResults>>&, mp::TypeList<>) const::'lambda0'()&&)
decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeRpcParams, ipc::capnp::messages::Init::MakeRpcResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeRpcParams, ipc::capnp::messages::Init::MakeRpcResults>>&, mp::TypeList<>) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeRpcParams, ipc::capnp::messages::Init::MakeRpcResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeRpcParams, ipc::capnp::messages::Init::MakeRpcResults>>&, mp::TypeList<>) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeRpcParams, ipc::capnp::messages::Init::MakeRpcResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeRpcParams, ipc::capnp::messages::Init::MakeRpcResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeRpcParams, ipc::capnp::messages::Init::MakeRpcResults>>&, mp::TypeList<>) const::'lambda0'()&&)
Line
Count
Source
230
4
{
231
4
    bool success{false};
232
4
    using R = std::invoke_result_t<Fn>;
233
4
    try {
234
        if constexpr (std::is_void_v<R>) {
235
            std::forward<Fn>(fn)();
236
            success = true;
237
            std::forward<After>(after)();
238
            return;
239
4
        } else {
240
4
            decltype(auto) result = std::forward<Fn>(fn)();
241
4
            success = true;
242
4
            std::forward<After>(after)();
243
4
            return result;
244
4
        }
245
4
    } catch (...) {
246
0
        if (!success) std::forward<After>(after)();
247
0
        throw;
248
0
    }
249
4
}
Unexecuted instantiation: decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::IsTestChainParams, ipc::capnp::messages::Mining::IsTestChainResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::IsTestChainParams, ipc::capnp::messages::Mining::IsTestChainResults>>&, mp::TypeList<>) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::IsTestChainParams, ipc::capnp::messages::Mining::IsTestChainResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::IsTestChainParams, ipc::capnp::messages::Mining::IsTestChainResults>>&, mp::TypeList<>) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::IsTestChainParams, ipc::capnp::messages::Mining::IsTestChainResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::IsTestChainParams, ipc::capnp::messages::Mining::IsTestChainResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::IsTestChainParams, ipc::capnp::messages::Mining::IsTestChainResults>>&, mp::TypeList<>) const::'lambda0'()&&)
Unexecuted instantiation: decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::IsInitialBlockDownloadParams, ipc::capnp::messages::Mining::IsInitialBlockDownloadResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::IsInitialBlockDownloadParams, ipc::capnp::messages::Mining::IsInitialBlockDownloadResults>>&, mp::TypeList<>) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::IsInitialBlockDownloadParams, ipc::capnp::messages::Mining::IsInitialBlockDownloadResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::IsInitialBlockDownloadParams, ipc::capnp::messages::Mining::IsInitialBlockDownloadResults>>&, mp::TypeList<>) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::IsInitialBlockDownloadParams, ipc::capnp::messages::Mining::IsInitialBlockDownloadResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::IsInitialBlockDownloadParams, ipc::capnp::messages::Mining::IsInitialBlockDownloadResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::IsInitialBlockDownloadParams, ipc::capnp::messages::Mining::IsInitialBlockDownloadResults>>&, mp::TypeList<>) const::'lambda0'()&&)
Unexecuted instantiation: decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTipParams, ipc::capnp::messages::Mining::GetTipResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTipParams, ipc::capnp::messages::Mining::GetTipResults>>&, mp::TypeList<>) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTipParams, ipc::capnp::messages::Mining::GetTipResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTipParams, ipc::capnp::messages::Mining::GetTipResults>>&, mp::TypeList<>) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTipParams, ipc::capnp::messages::Mining::GetTipResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTipParams, ipc::capnp::messages::Mining::GetTipResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTipParams, ipc::capnp::messages::Mining::GetTipResults>>&, mp::TypeList<>) const::'lambda0'()&&)
Unexecuted instantiation: decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>>, uint256, std::chrono::duration<double, std::ratio<1l, 1000l>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>>&, mp::TypeList<>, uint256&&, std::chrono::duration<double, std::ratio<1l, 1000l>>&&) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>>, uint256, std::chrono::duration<double, std::ratio<1l, 1000l>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>>&, mp::TypeList<>, uint256&&, std::chrono::duration<double, std::ratio<1l, 1000l>>&&) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>>, uint256, std::chrono::duration<double, std::ratio<1l, 1000l>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::WaitTipChangedParams, ipc::capnp::messages::Mining::WaitTipChangedResults>>&, mp::TypeList<>, uint256&&, std::chrono::duration<double, std::ratio<1l, 1000l>>&&) const::'lambda0'()&&)
Unexecuted instantiation: decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::CreateNewBlockParams, ipc::capnp::messages::Mining::CreateNewBlockResults>>, node::BlockCreateOptions const&, bool>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::CreateNewBlockParams, ipc::capnp::messages::Mining::CreateNewBlockResults>>&, mp::TypeList<>, node::BlockCreateOptions const&, bool&&) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::CreateNewBlockParams, ipc::capnp::messages::Mining::CreateNewBlockResults>>, node::BlockCreateOptions const&, bool>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::CreateNewBlockParams, ipc::capnp::messages::Mining::CreateNewBlockResults>>&, mp::TypeList<>, node::BlockCreateOptions const&, bool&&) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::CreateNewBlockParams, ipc::capnp::messages::Mining::CreateNewBlockResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::CreateNewBlockParams, ipc::capnp::messages::Mining::CreateNewBlockResults>>, node::BlockCreateOptions const&, bool>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::CreateNewBlockParams, ipc::capnp::messages::Mining::CreateNewBlockResults>>&, mp::TypeList<>, node::BlockCreateOptions const&, bool&&) const::'lambda0'()&&)
Unexecuted instantiation: decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>>, CBlock const&, 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::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>>&, mp::TypeList<>, CBlock const&, 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>>&) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>>, CBlock const&, 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::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>>&, mp::TypeList<>, CBlock const&, 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>>&) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>>, CBlock const&, 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::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::CheckBlockParams, ipc::capnp::messages::Mining::CheckBlockResults>>&, mp::TypeList<>, CBlock const&, 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>>&) const::'lambda0'()&&)
Unexecuted instantiation: decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::InterruptParams, ipc::capnp::messages::Mining::InterruptResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::InterruptParams, ipc::capnp::messages::Mining::InterruptResults>>&, mp::TypeList<>) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::InterruptParams, ipc::capnp::messages::Mining::InterruptResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::InterruptParams, ipc::capnp::messages::Mining::InterruptResults>>&, mp::TypeList<>) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::InterruptParams, ipc::capnp::messages::Mining::InterruptResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::InterruptParams, ipc::capnp::messages::Mining::InterruptResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::InterruptParams, ipc::capnp::messages::Mining::InterruptResults>>&, mp::TypeList<>) const::'lambda0'()&&)
Unexecuted instantiation: decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>>, CBlock 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::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>>&, mp::TypeList<>, CBlock 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>>&) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>>, CBlock 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::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>>&, mp::TypeList<>, CBlock 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>>&) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>>, CBlock 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::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::SubmitBlockParams, ipc::capnp::messages::Mining::SubmitBlockResults>>&, mp::TypeList<>, CBlock 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>>&) const::'lambda0'()&&)
Unexecuted instantiation: decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>, 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::TypeList<>, std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>, 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::TypeList<>, std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByTxIDParams, ipc::capnp::messages::Mining::GetTransactionsByTxIDResults>>, 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::TypeList<>, std::vector<transaction_identifier<false>, std::allocator<transaction_identifier<false>>> const&) const::'lambda0'()&&)
Unexecuted instantiation: decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>, 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::TypeList<>, std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>, 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::TypeList<>, std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Mining>, capnp::CallContext<ipc::capnp::messages::Mining::GetTransactionsByWitnessIDParams, ipc::capnp::messages::Mining::GetTransactionsByWitnessIDResults>>, 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::TypeList<>, std::vector<transaction_identifier<true>, std::allocator<transaction_identifier<true>>> const&) const::'lambda0'()&&)
Unexecuted instantiation: decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetBlockHeaderParams, ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetBlockHeaderParams, ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults>>&, mp::TypeList<>) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetBlockHeaderParams, ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetBlockHeaderParams, ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults>>&, mp::TypeList<>) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetBlockHeaderParams, ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetBlockHeaderParams, ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetBlockHeaderParams, ipc::capnp::messages::BlockTemplate::GetBlockHeaderResults>>&, mp::TypeList<>) const::'lambda0'()&&)
Unexecuted instantiation: decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetBlockParams, ipc::capnp::messages::BlockTemplate::GetBlockResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetBlockParams, ipc::capnp::messages::BlockTemplate::GetBlockResults>>&, mp::TypeList<>) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetBlockParams, ipc::capnp::messages::BlockTemplate::GetBlockResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetBlockParams, ipc::capnp::messages::BlockTemplate::GetBlockResults>>&, mp::TypeList<>) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetBlockParams, ipc::capnp::messages::BlockTemplate::GetBlockResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetBlockParams, ipc::capnp::messages::BlockTemplate::GetBlockResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetBlockParams, ipc::capnp::messages::BlockTemplate::GetBlockResults>>&, mp::TypeList<>) const::'lambda0'()&&)
Unexecuted instantiation: decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetTxFeesParams, ipc::capnp::messages::BlockTemplate::GetTxFeesResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetTxFeesParams, ipc::capnp::messages::BlockTemplate::GetTxFeesResults>>&, mp::TypeList<>) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetTxFeesParams, ipc::capnp::messages::BlockTemplate::GetTxFeesResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetTxFeesParams, ipc::capnp::messages::BlockTemplate::GetTxFeesResults>>&, mp::TypeList<>) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetTxFeesParams, ipc::capnp::messages::BlockTemplate::GetTxFeesResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetTxFeesParams, ipc::capnp::messages::BlockTemplate::GetTxFeesResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetTxFeesParams, ipc::capnp::messages::BlockTemplate::GetTxFeesResults>>&, mp::TypeList<>) const::'lambda0'()&&)
Unexecuted instantiation: decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetTxSigopsParams, ipc::capnp::messages::BlockTemplate::GetTxSigopsResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetTxSigopsParams, ipc::capnp::messages::BlockTemplate::GetTxSigopsResults>>&, mp::TypeList<>) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetTxSigopsParams, ipc::capnp::messages::BlockTemplate::GetTxSigopsResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetTxSigopsParams, ipc::capnp::messages::BlockTemplate::GetTxSigopsResults>>&, mp::TypeList<>) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetTxSigopsParams, ipc::capnp::messages::BlockTemplate::GetTxSigopsResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetTxSigopsParams, ipc::capnp::messages::BlockTemplate::GetTxSigopsResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetTxSigopsParams, ipc::capnp::messages::BlockTemplate::GetTxSigopsResults>>&, mp::TypeList<>) const::'lambda0'()&&)
Unexecuted instantiation: decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetCoinbaseTxParams, ipc::capnp::messages::BlockTemplate::GetCoinbaseTxResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetCoinbaseTxParams, ipc::capnp::messages::BlockTemplate::GetCoinbaseTxResults>>&, mp::TypeList<>) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetCoinbaseTxParams, ipc::capnp::messages::BlockTemplate::GetCoinbaseTxResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetCoinbaseTxParams, ipc::capnp::messages::BlockTemplate::GetCoinbaseTxResults>>&, mp::TypeList<>) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetCoinbaseTxParams, ipc::capnp::messages::BlockTemplate::GetCoinbaseTxResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetCoinbaseTxParams, ipc::capnp::messages::BlockTemplate::GetCoinbaseTxResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetCoinbaseTxParams, ipc::capnp::messages::BlockTemplate::GetCoinbaseTxResults>>&, mp::TypeList<>) const::'lambda0'()&&)
Unexecuted instantiation: decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathParams, ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathParams, ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>&, mp::TypeList<>) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathParams, ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathParams, ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>&, mp::TypeList<>) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathParams, ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathParams, ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathParams, ipc::capnp::messages::BlockTemplate::GetCoinbaseMerklePathResults>>&, mp::TypeList<>) const::'lambda0'()&&)
Unexecuted instantiation: decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>>, unsigned int, unsigned int, unsigned int, 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::TypeList<>, unsigned int&&, unsigned int&&, unsigned int&&, std::shared_ptr<CTransaction const>&&) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>>, unsigned int, unsigned int, unsigned int, 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::TypeList<>, unsigned int&&, unsigned int&&, unsigned int&&, std::shared_ptr<CTransaction const>&&) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::SubmitSolutionParams, ipc::capnp::messages::BlockTemplate::SubmitSolutionResults>>, unsigned int, unsigned int, unsigned int, 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::TypeList<>, unsigned int&&, unsigned int&&, unsigned int&&, std::shared_ptr<CTransaction const>&&) const::'lambda0'()&&)
Unexecuted instantiation: decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::WaitNextParams, ipc::capnp::messages::BlockTemplate::WaitNextResults>>, node::BlockWaitOptions>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::WaitNextParams, ipc::capnp::messages::BlockTemplate::WaitNextResults>>&, mp::TypeList<>, node::BlockWaitOptions&&) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::WaitNextParams, ipc::capnp::messages::BlockTemplate::WaitNextResults>>, node::BlockWaitOptions>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::WaitNextParams, ipc::capnp::messages::BlockTemplate::WaitNextResults>>&, mp::TypeList<>, node::BlockWaitOptions&&) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::WaitNextParams, ipc::capnp::messages::BlockTemplate::WaitNextResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::WaitNextParams, ipc::capnp::messages::BlockTemplate::WaitNextResults>>, node::BlockWaitOptions>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::WaitNextParams, ipc::capnp::messages::BlockTemplate::WaitNextResults>>&, mp::TypeList<>, node::BlockWaitOptions&&) const::'lambda0'()&&)
Unexecuted instantiation: decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::InterruptWaitParams, ipc::capnp::messages::BlockTemplate::InterruptWaitResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::InterruptWaitParams, ipc::capnp::messages::BlockTemplate::InterruptWaitResults>>&, mp::TypeList<>) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::InterruptWaitParams, ipc::capnp::messages::BlockTemplate::InterruptWaitResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::InterruptWaitParams, ipc::capnp::messages::BlockTemplate::InterruptWaitResults>>&, mp::TypeList<>) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::InterruptWaitParams, ipc::capnp::messages::BlockTemplate::InterruptWaitResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::InterruptWaitParams, ipc::capnp::messages::BlockTemplate::InterruptWaitResults>>>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::InterruptWaitParams, ipc::capnp::messages::BlockTemplate::InterruptWaitResults>>&, mp::TypeList<>) const::'lambda0'()&&)
decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Rpc>, capnp::CallContext<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>>, UniValue, 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::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Rpc>, capnp::CallContext<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>>&, mp::TypeList<>, UniValue&&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&&) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Rpc>, capnp::CallContext<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>>, UniValue, 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::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Rpc>, capnp::CallContext<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>>&, mp::TypeList<>, UniValue&&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&&) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Rpc>, capnp::CallContext<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Rpc>, capnp::CallContext<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>>, UniValue, 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::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Rpc>, capnp::CallContext<ipc::capnp::messages::Rpc::ExecuteRpcParams, ipc::capnp::messages::Rpc::ExecuteRpcResults>>&, mp::TypeList<>, UniValue&&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&&) const::'lambda0'()&&)
Line
Count
Source
230
4
{
231
4
    bool success{false};
232
4
    using R = std::invoke_result_t<Fn>;
233
4
    try {
234
        if constexpr (std::is_void_v<R>) {
235
            std::forward<Fn>(fn)();
236
            success = true;
237
            std::forward<After>(after)();
238
            return;
239
4
        } else {
240
4
            decltype(auto) result = std::forward<Fn>(fn)();
241
4
            success = true;
242
4
            std::forward<After>(after)();
243
4
            return result;
244
4
        }
245
4
    } catch (...) {
246
0
        if (!success) std::forward<After>(after)();
247
0
        throw;
248
0
    }
249
4
}
decltype(auto) mp::TryFinally<decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Echo>, capnp::CallContext<ipc::capnp::messages::Echo::EchoParams, ipc::capnp::messages::Echo::EchoResults>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Echo>, capnp::CallContext<ipc::capnp::messages::Echo::EchoParams, ipc::capnp::messages::Echo::EchoResults>>&, mp::TypeList<>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&) const::'lambda'(), decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Echo>, capnp::CallContext<ipc::capnp::messages::Echo::EchoParams, ipc::capnp::messages::Echo::EchoResults>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Echo>, capnp::CallContext<ipc::capnp::messages::Echo::EchoParams, ipc::capnp::messages::Echo::EchoResults>>&, mp::TypeList<>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&) const::'lambda0'()>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Echo>, capnp::CallContext<ipc::capnp::messages::Echo::EchoParams, ipc::capnp::messages::Echo::EchoResults>>&&, decltype(auto) mp::ServerCall::invoke<mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Echo>, capnp::CallContext<ipc::capnp::messages::Echo::EchoParams, ipc::capnp::messages::Echo::EchoResults>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&>(mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Echo>, capnp::CallContext<ipc::capnp::messages::Echo::EchoParams, ipc::capnp::messages::Echo::EchoResults>>&, mp::TypeList<>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&) const::'lambda0'()&&)
Line
Count
Source
230
6
{
231
6
    bool success{false};
232
6
    using R = std::invoke_result_t<Fn>;
233
6
    try {
234
        if constexpr (std::is_void_v<R>) {
235
            std::forward<Fn>(fn)();
236
            success = true;
237
            std::forward<After>(after)();
238
            return;
239
6
        } else {
240
6
            decltype(auto) result = std::forward<Fn>(fn)();
241
6
            success = true;
242
6
            std::forward<After>(after)();
243
6
            return result;
244
6
        }
245
6
    } catch (...) {
246
0
        if (!success) std::forward<After>(after)();
247
0
        throw;
248
0
    }
249
6
}
250
251
//! Format current thread name as "{exe_name}-{$pid}/{thread_name}-{$tid}".
252
std::string ThreadName(const char* exe_name);
253
254
//! Escape binary string for use in log so it doesn't trigger unicode decode
255
//! errors in python unit tests.
256
std::string LogEscape(const kj::StringTree& string, size_t max_size);
257
258
//! Callback type used by SpawnProcess below.
259
using FdToArgsFn = std::function<std::vector<std::string>(int fd)>;
260
261
//! Spawn a new process that communicates with the current process over a socket
262
//! pair. Returns pid through an output argument, and file descriptor for the
263
//! local side of the socket.
264
//! The fd_to_args callback is invoked in the parent process before fork().
265
//! It must not rely on child pid/state, and must return the command line
266
//! arguments that should be used to execute the process. Embed the remote file
267
//! descriptor number in whatever format the child process expects.
268
int SpawnProcess(int& pid, FdToArgsFn&& fd_to_args);
269
270
//! Call execvp with vector args.
271
//! Not safe to call in a post-fork child of a multi-threaded process.
272
//! Currently only used by mpgen at build time.
273
void ExecProcess(const std::vector<std::string>& args);
274
275
//! Wait for a process to exit and return its exit code.
276
int WaitProcess(int pid);
277
278
0
inline char* CharCast(char* c) { return c; }
279
0
inline char* CharCast(unsigned char* c) { return (char*)c; }
280
20
inline const char* CharCast(const char* c) { return c; }
281
0
inline const char* CharCast(const unsigned char* c) { return (const char*)c; }
282
283
#if __has_include(<cxxabi.h>)   // GCC & Clang ─ use <cxxabi.h> to demangle
284
inline std::string _demangle(const char* m)
285
250
{
286
250
    int status = 0;
287
250
    std::unique_ptr<char, void(*)(void*)> p{
288
250
        abi::__cxa_demangle(m, /*output_buffer=*/nullptr, /*length=*/nullptr, &status), std::free};
289
250
    return (status == 0 && p) ? p.get() : m;   // fall back on mangled if needed
290
250
}
291
#else                           // MSVC or other ─ no demangling available
292
inline std::string _demangle(const char* m) { return m; }
293
#endif
294
295
template<class T>
296
std::string CxxTypeName(const T& /*unused*/)
297
250
{
298
250
#ifdef __cpp_rtti
299
250
    return _demangle(typeid(std::decay_t<T>).name());
300
#else
301
    return "<type information unavailable without rtti>";
302
#endif
303
250
}
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> mp::CxxTypeName<mp::ProxyClientBase<gen::FooInterface, FooImplementation>>(mp::ProxyClientBase<gen::FooInterface, FooImplementation> const&)
Line
Count
Source
297
3
{
298
3
#ifdef __cpp_rtti
299
3
    return _demangle(typeid(std::decay_t<T>).name());
300
#else
301
    return "<type information unavailable without rtti>";
302
#endif
303
3
}
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> mp::CxxTypeName<mp::ProxyServerBase<gen::FooInterface, FooImplementation>>(mp::ProxyServerBase<gen::FooInterface, FooImplementation> const&)
Line
Count
Source
297
3
{
298
3
#ifdef __cpp_rtti
299
3
    return _demangle(typeid(std::decay_t<T>).name());
300
#else
301
    return "<type information unavailable without rtti>";
302
#endif
303
3
}
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> mp::CxxTypeName<mp::ProxyClient<gen::FooInterface>>(mp::ProxyClient<gen::FooInterface> const&)
Line
Count
Source
297
1
{
298
1
#ifdef __cpp_rtti
299
1
    return _demangle(typeid(std::decay_t<T>).name());
300
#else
301
    return "<type information unavailable without rtti>";
302
#endif
303
1
}
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> mp::CxxTypeName<mp::ProxyServer<gen::FooInterface>>(mp::ProxyServer<gen::FooInterface> const&)
Line
Count
Source
297
1
{
298
1
#ifdef __cpp_rtti
299
1
    return _demangle(typeid(std::decay_t<T>).name());
300
#else
301
    return "<type information unavailable without rtti>";
302
#endif
303
1
}
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> mp::CxxTypeName<mp::ProxyClientBase<ipc::capnp::messages::Init, interfaces::Init>>(mp::ProxyClientBase<ipc::capnp::messages::Init, interfaces::Init> const&)
Line
Count
Source
297
18
{
298
18
#ifdef __cpp_rtti
299
18
    return _demangle(typeid(std::decay_t<T>).name());
300
#else
301
    return "<type information unavailable without rtti>";
302
#endif
303
18
}
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> mp::CxxTypeName<mp::ProxyServerBase<ipc::capnp::messages::Init, interfaces::Init>>(mp::ProxyServerBase<ipc::capnp::messages::Init, interfaces::Init> const&)
Line
Count
Source
297
30
{
298
30
#ifdef __cpp_rtti
299
30
    return _demangle(typeid(std::decay_t<T>).name());
300
#else
301
    return "<type information unavailable without rtti>";
302
#endif
303
30
}
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> mp::CxxTypeName<mp::ProxyClientBase<ipc::capnp::messages::Echo, interfaces::Echo>>(mp::ProxyClientBase<ipc::capnp::messages::Echo, interfaces::Echo> const&)
Line
Count
Source
297
18
{
298
18
#ifdef __cpp_rtti
299
18
    return _demangle(typeid(std::decay_t<T>).name());
300
#else
301
    return "<type information unavailable without rtti>";
302
#endif
303
18
}
Unexecuted instantiation: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> mp::CxxTypeName<mp::ProxyClientBase<ipc::capnp::messages::Mining, interfaces::Mining>>(mp::ProxyClientBase<ipc::capnp::messages::Mining, interfaces::Mining> const&)
Unexecuted instantiation: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> mp::CxxTypeName<mp::ProxyClientBase<ipc::capnp::messages::Rpc, interfaces::Rpc>>(mp::ProxyClientBase<ipc::capnp::messages::Rpc, interfaces::Rpc> const&)
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> mp::CxxTypeName<mp::ProxyClient<ipc::capnp::messages::Init>>(mp::ProxyClient<ipc::capnp::messages::Init> const&)
Line
Count
Source
297
6
{
298
6
#ifdef __cpp_rtti
299
6
    return _demangle(typeid(std::decay_t<T>).name());
300
#else
301
    return "<type information unavailable without rtti>";
302
#endif
303
6
}
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> mp::CxxTypeName<mp::ProxyServer<ipc::capnp::messages::Init>>(mp::ProxyServer<ipc::capnp::messages::Init> const&)
Line
Count
Source
297
10
{
298
10
#ifdef __cpp_rtti
299
10
    return _demangle(typeid(std::decay_t<T>).name());
300
#else
301
    return "<type information unavailable without rtti>";
302
#endif
303
10
}
Unexecuted instantiation: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> mp::CxxTypeName<mp::ProxyServerBase<ipc::capnp::messages::Mining, interfaces::Mining>>(mp::ProxyServerBase<ipc::capnp::messages::Mining, interfaces::Mining> const&)
Unexecuted instantiation: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> mp::CxxTypeName<mp::ProxyClientBase<ipc::capnp::messages::BlockTemplate, interfaces::BlockTemplate>>(mp::ProxyClientBase<ipc::capnp::messages::BlockTemplate, interfaces::BlockTemplate> const&)
Unexecuted instantiation: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> mp::CxxTypeName<mp::ProxyServerBase<ipc::capnp::messages::BlockTemplate, interfaces::BlockTemplate>>(mp::ProxyServerBase<ipc::capnp::messages::BlockTemplate, interfaces::BlockTemplate> const&)
Unexecuted instantiation: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> mp::CxxTypeName<mp::ProxyClient<ipc::capnp::messages::Mining>>(mp::ProxyClient<ipc::capnp::messages::Mining> const&)
Unexecuted instantiation: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> mp::CxxTypeName<mp::ProxyServer<ipc::capnp::messages::Mining>>(mp::ProxyServer<ipc::capnp::messages::Mining> const&)
Unexecuted instantiation: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> mp::CxxTypeName<mp::ProxyClient<ipc::capnp::messages::BlockTemplate>>(mp::ProxyClient<ipc::capnp::messages::BlockTemplate> const&)
Unexecuted instantiation: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> mp::CxxTypeName<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>>(mp::ProxyServer<ipc::capnp::messages::BlockTemplate> const&)
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> mp::CxxTypeName<mp::ProxyServerBase<ipc::capnp::messages::Rpc, interfaces::Rpc>>(mp::ProxyServerBase<ipc::capnp::messages::Rpc, interfaces::Rpc> const&)
Line
Count
Source
297
12
{
298
12
#ifdef __cpp_rtti
299
12
    return _demangle(typeid(std::decay_t<T>).name());
300
#else
301
    return "<type information unavailable without rtti>";
302
#endif
303
12
}
Unexecuted instantiation: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> mp::CxxTypeName<mp::ProxyClient<ipc::capnp::messages::Rpc>>(mp::ProxyClient<ipc::capnp::messages::Rpc> const&)
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> mp::CxxTypeName<mp::ProxyServer<ipc::capnp::messages::Rpc>>(mp::ProxyServer<ipc::capnp::messages::Rpc> const&)
Line
Count
Source
297
4
{
298
4
#ifdef __cpp_rtti
299
4
    return _demangle(typeid(std::decay_t<T>).name());
300
#else
301
    return "<type information unavailable without rtti>";
302
#endif
303
4
}
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> mp::CxxTypeName<mp::ProxyServerBase<ipc::capnp::messages::Echo, interfaces::Echo>>(mp::ProxyServerBase<ipc::capnp::messages::Echo, interfaces::Echo> const&)
Line
Count
Source
297
18
{
298
18
#ifdef __cpp_rtti
299
18
    return _demangle(typeid(std::decay_t<T>).name());
300
#else
301
    return "<type information unavailable without rtti>";
302
#endif
303
18
}
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> mp::CxxTypeName<mp::ProxyClient<ipc::capnp::messages::Echo>>(mp::ProxyClient<ipc::capnp::messages::Echo> const&)
Line
Count
Source
297
6
{
298
6
#ifdef __cpp_rtti
299
6
    return _demangle(typeid(std::decay_t<T>).name());
300
#else
301
    return "<type information unavailable without rtti>";
302
#endif
303
6
}
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> mp::CxxTypeName<mp::ProxyServer<ipc::capnp::messages::Echo>>(mp::ProxyServer<ipc::capnp::messages::Echo> const&)
Line
Count
Source
297
6
{
298
6
#ifdef __cpp_rtti
299
6
    return _demangle(typeid(std::decay_t<T>).name());
300
#else
301
    return "<type information unavailable without rtti>";
302
#endif
303
6
}
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> mp::CxxTypeName<mp::ProxyClientBase<mp::Thread, capnp::Void>>(mp::ProxyClientBase<mp::Thread, capnp::Void> const&)
Line
Count
Source
297
114
{
298
114
#ifdef __cpp_rtti
299
114
    return _demangle(typeid(std::decay_t<T>).name());
300
#else
301
    return "<type information unavailable without rtti>";
302
#endif
303
114
}
304
305
//! Exception thrown from code executing an IPC call that is interrupted.
306
struct InterruptException final : std::exception {
307
0
    explicit InterruptException(std::string message) : m_message(std::move(message)) {}
308
0
    const char* what() const noexcept override { return m_message.c_str(); }
309
    std::string m_message;
310
};
311
312
class CancelProbe;
313
314
//! Helper class that detects when a promise is canceled. Used to detect
315
//! canceled requests and prevent potential crashes on unclean disconnects.
316
//!
317
//! In the future, this could also be used to support a way for wrapped C++
318
//! methods to detect cancellation (like approach #4 in
319
//! https://github.com/bitcoin/bitcoin/issues/33575).
320
class CancelMonitor
321
{
322
public:
323
    inline ~CancelMonitor();
324
    inline void promiseDestroyed(CancelProbe& probe);
325
326
    bool m_canceled{false};
327
    std::function<void()> m_on_cancel;
328
    CancelProbe* m_probe{nullptr};
329
};
330
331
//! Helper object to attach to a promise and update a CancelMonitor.
332
class CancelProbe
333
{
334
public:
335
26
    CancelProbe(CancelMonitor& monitor) : m_monitor(&monitor)
336
26
    {
337
26
        assert(!monitor.m_probe);
338
26
        monitor.m_probe = this;
339
26
    }
340
    ~CancelProbe()
341
26
    {
342
26
        if (m_monitor) m_monitor->promiseDestroyed(*this);
343
26
    }
344
    CancelMonitor* m_monitor;
345
};
346
347
CancelMonitor::~CancelMonitor()
348
26
{
349
26
    if (m_probe) {
350
26
        assert(m_probe->m_monitor == this);
351
26
        m_probe->m_monitor = nullptr;
352
26
        m_probe = nullptr;
353
26
    }
354
26
}
355
356
void CancelMonitor::promiseDestroyed(CancelProbe& probe)
357
0
{
358
    // If promise is being destroyed, assume the promise has been canceled. In
359
    // theory this method could be called when a promise was fulfilled or
360
    // rejected rather than canceled, but it's safe to assume that's not the
361
    // case because the CancelMonitor class is meant to be used inside code
362
    // fulfilling or rejecting the promise and destroyed before doing so.
363
0
    assert(m_probe == &probe);
364
0
    m_canceled = true;
365
0
    if (m_on_cancel) m_on_cancel();
366
0
    m_probe = nullptr;
367
0
}
368
} // namespace mp
369
370
#endif // MP_UTIL_H