Coverage Report

Created: 2026-05-06 07:53

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 <cstddef>
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 <type_traits>
19
#include <utility>
20
#include <variant>
21
#include <vector>
22
23
namespace mp {
24
25
//! Generic utility functions used by capnp code.
26
27
//! Type holding a list of types.
28
//!
29
//! Example:
30
//!   TypeList<int, bool, void>
31
template <typename... Types>
32
struct TypeList
33
{
34
    static constexpr size_t size = sizeof...(Types);
35
};
36
37
//! Construct a template class value by deducing template arguments from the
38
//! types of constructor arguments, so they don't need to be specified manually.
39
//!
40
//! Uses of this can go away with class template deduction in C++17
41
//! (https://en.cppreference.com/w/cpp/language/class_template_argument_deduction)
42
//!
43
//! Example:
44
//!   Make<std::pair>(5, true) // Constructs std::pair<int, bool>(5, true);
45
template <template <typename...> class Class, typename... Types, typename... Args>
46
Class<Types..., std::remove_reference_t<Args>...> Make(Args&&... args)
47
383
{
48
383
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
383
}
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
47
2
{
48
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
2
{
48
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
2
{
48
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
2
{
48
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
2
{
48
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
2
{
48
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
2
{
48
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
2
{
48
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
2
{
48
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
2
{
48
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
2
{
48
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
2
{
48
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
2
{
48
2
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
5
{
48
5
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
5
}
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
1
{
48
1
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
20
{
48
20
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
10
{
48
10
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
12
{
48
12
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
12
{
48
12
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
6
{
48
6
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
6
{
48
6
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
8
{
48
8
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
8
{
48
8
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
4
{
48
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
4
{
48
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
12
{
48
12
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
6
{
48
6
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
12
{
48
12
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
12
{
48
12
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
12
{
48
12
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
6
{
48
6
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
6
{
48
6
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
6
{
48
6
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
10
{
48
10
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
10
{
48
10
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
10
{
48
10
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
6
{
48
6
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
4
{
48
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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::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::ValueField<std::remove_reference<capnp::Data::Reader&>::type> mp::Make<mp::ValueField, capnp::Data::Reader&>(capnp::Data::Reader&)
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::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
47
8
{
48
8
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
8
{
48
8
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
8
{
48
8
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
8
{
48
8
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
8
{
48
8
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
4
{
48
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
4
{
48
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
4
{
48
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
4
{
48
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
4
{
48
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
4
{
48
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
4
{
48
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
4
{
48
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
4
{
48
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
4
{
48
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
4
{
48
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
4
{
48
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
4
{
48
4
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
6
{
48
6
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
6
{
48
6
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
6
{
48
6
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
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
47
6
{
48
6
    return Class<Types..., std::remove_reference_t<Args>...>{std::forward<Args>(args)...};
49
6
}
50
51
//! Type helper splitting a TypeList into two halves at position index.
52
//!
53
//! Example:
54
//!   is_same<TypeList<int, double>, Split<2, TypeList<int, double, float, bool>>::First>
55
//!   is_same<TypeList<float, bool>, Split<2, TypeList<int, double, float, bool>>::Second>
56
template <std::size_t index, typename List, typename _First = TypeList<>, bool done = index == 0>
57
struct Split;
58
59
//! Specialization of above (base case)
60
template <typename _Second, typename _First>
61
struct Split<0, _Second, _First, true>
62
{
63
    using First = _First;
64
    using Second = _Second;
65
};
66
67
//! Specialization of above (recursive case)
68
template <std::size_t index, typename Type, typename... _Second, typename... _First>
69
struct Split<index, TypeList<Type, _Second...>, TypeList<_First...>, false>
70
{
71
    using _Next = Split<index - 1, TypeList<_Second...>, TypeList<_First..., Type>>;
72
    using First = typename _Next::First;
73
    using Second = typename _Next::Second;
74
};
75
76
//! Type helper giving return type of a callable type.
77
template <typename Callable>
78
using ResultOf = decltype(std::declval<Callable>()());
79
80
//! Substitutue for std::remove_cvref_t
81
template <typename T>
82
using RemoveCvRef = std::remove_cv_t<std::remove_reference_t<T>>;
83
84
//! Type helper abbreviating std::decay.
85
template <typename T>
86
using Decay = std::decay_t<T>;
87
88
//! SFINAE helper, see using Require below.
89
template <typename SfinaeExpr, typename Result_>
90
struct _Require
91
{
92
    using Result = Result_;
93
};
94
95
//! SFINAE helper, basically the same as to C++17's void_t, but allowing types other than void to be returned.
96
template <typename SfinaeExpr, typename Result = void>
97
using Require = typename _Require<SfinaeExpr, Result>::Result;
98
99
//! Function parameter type for prioritizing overloaded function calls that
100
//! would otherwise be ambiguous.
101
//!
102
//! Example:
103
//!   auto foo(Priority<1>) -> std::enable_if<>;
104
//!   auto foo(Priority<0>) -> void;
105
//!
106
//!   foo(Priority<1>());   // Calls higher priority overload if enabled.
107
template <int priority>
108
struct Priority : Priority<priority - 1>
109
{
110
};
111
112
//! Specialization of above (base case)
113
template <>
114
struct Priority<0>
115
{
116
};
117
118
//! Return capnp type name with filename prefix removed.
119
template <typename T>
120
const char* TypeName()
121
144
{
122
    // DisplayName string looks like
123
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
124
    // This discards the part of the string before the first ':' character.
125
    // Another alternative would be to use the displayNamePrefixLength field,
126
    // but this discards everything before the last '.' character, throwing away
127
    // the object name, which is useful.
128
144
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
129
144
    const char* short_name = strchr(display_name, ':');
130
144
    return short_name ? short_name + 1 : display_name;
131
144
}
char const* mp::TypeName<gen::FooInterface::AddParams>()
Line
Count
Source
121
2
{
122
    // DisplayName string looks like
123
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
124
    // This discards the part of the string before the first ':' character.
125
    // Another alternative would be to use the displayNamePrefixLength field,
126
    // but this discards everything before the last '.' character, throwing away
127
    // the object name, which is useful.
128
2
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
129
2
    const char* short_name = strchr(display_name, ':');
130
2
    return short_name ? short_name + 1 : display_name;
131
2
}
char const* mp::TypeName<gen::FooInterface::AddResults>()
Line
Count
Source
121
2
{
122
    // DisplayName string looks like
123
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
124
    // This discards the part of the string before the first ':' character.
125
    // Another alternative would be to use the displayNamePrefixLength field,
126
    // but this discards everything before the last '.' character, throwing away
127
    // the object name, which is useful.
128
2
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
129
2
    const char* short_name = strchr(display_name, ':');
130
2
    return short_name ? short_name + 1 : display_name;
131
2
}
char const* mp::TypeName<gen::FooInterface::PassOutPointParams>()
Line
Count
Source
121
2
{
122
    // DisplayName string looks like
123
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
124
    // This discards the part of the string before the first ':' character.
125
    // Another alternative would be to use the displayNamePrefixLength field,
126
    // but this discards everything before the last '.' character, throwing away
127
    // the object name, which is useful.
128
2
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
129
2
    const char* short_name = strchr(display_name, ':');
130
2
    return short_name ? short_name + 1 : display_name;
131
2
}
char const* mp::TypeName<gen::FooInterface::PassOutPointResults>()
Line
Count
Source
121
2
{
122
    // DisplayName string looks like
123
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
124
    // This discards the part of the string before the first ':' character.
125
    // Another alternative would be to use the displayNamePrefixLength field,
126
    // but this discards everything before the last '.' character, throwing away
127
    // the object name, which is useful.
128
2
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
129
2
    const char* short_name = strchr(display_name, ':');
130
2
    return short_name ? short_name + 1 : display_name;
131
2
}
char const* mp::TypeName<gen::FooInterface::PassUniValueParams>()
Line
Count
Source
121
2
{
122
    // DisplayName string looks like
123
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
124
    // This discards the part of the string before the first ':' character.
125
    // Another alternative would be to use the displayNamePrefixLength field,
126
    // but this discards everything before the last '.' character, throwing away
127
    // the object name, which is useful.
128
2
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
129
2
    const char* short_name = strchr(display_name, ':');
130
2
    return short_name ? short_name + 1 : display_name;
131
2
}
char const* mp::TypeName<gen::FooInterface::PassUniValueResults>()
Line
Count
Source
121
2
{
122
    // DisplayName string looks like
123
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
124
    // This discards the part of the string before the first ':' character.
125
    // Another alternative would be to use the displayNamePrefixLength field,
126
    // but this discards everything before the last '.' character, throwing away
127
    // the object name, which is useful.
128
2
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
129
2
    const char* short_name = strchr(display_name, ':');
130
2
    return short_name ? short_name + 1 : display_name;
131
2
}
char const* mp::TypeName<gen::FooInterface::PassTransactionParams>()
Line
Count
Source
121
2
{
122
    // DisplayName string looks like
123
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
124
    // This discards the part of the string before the first ':' character.
125
    // Another alternative would be to use the displayNamePrefixLength field,
126
    // but this discards everything before the last '.' character, throwing away
127
    // the object name, which is useful.
128
2
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
129
2
    const char* short_name = strchr(display_name, ':');
130
2
    return short_name ? short_name + 1 : display_name;
131
2
}
char const* mp::TypeName<gen::FooInterface::PassTransactionResults>()
Line
Count
Source
121
2
{
122
    // DisplayName string looks like
123
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
124
    // This discards the part of the string before the first ':' character.
125
    // Another alternative would be to use the displayNamePrefixLength field,
126
    // but this discards everything before the last '.' character, throwing away
127
    // the object name, which is useful.
128
2
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
129
2
    const char* short_name = strchr(display_name, ':');
130
2
    return short_name ? short_name + 1 : display_name;
131
2
}
char const* mp::TypeName<gen::FooInterface::PassVectorCharParams>()
Line
Count
Source
121
2
{
122
    // DisplayName string looks like
123
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
124
    // This discards the part of the string before the first ':' character.
125
    // Another alternative would be to use the displayNamePrefixLength field,
126
    // but this discards everything before the last '.' character, throwing away
127
    // the object name, which is useful.
128
2
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
129
2
    const char* short_name = strchr(display_name, ':');
130
2
    return short_name ? short_name + 1 : display_name;
131
2
}
char const* mp::TypeName<gen::FooInterface::PassVectorCharResults>()
Line
Count
Source
121
2
{
122
    // DisplayName string looks like
123
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
124
    // This discards the part of the string before the first ':' character.
125
    // Another alternative would be to use the displayNamePrefixLength field,
126
    // but this discards everything before the last '.' character, throwing away
127
    // the object name, which is useful.
128
2
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
129
2
    const char* short_name = strchr(display_name, ':');
130
2
    return short_name ? short_name + 1 : display_name;
131
2
}
char const* mp::TypeName<gen::FooInterface::PassScriptParams>()
Line
Count
Source
121
2
{
122
    // DisplayName string looks like
123
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
124
    // This discards the part of the string before the first ':' character.
125
    // Another alternative would be to use the displayNamePrefixLength field,
126
    // but this discards everything before the last '.' character, throwing away
127
    // the object name, which is useful.
128
2
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
129
2
    const char* short_name = strchr(display_name, ':');
130
2
    return short_name ? short_name + 1 : display_name;
131
2
}
char const* mp::TypeName<gen::FooInterface::PassScriptResults>()
Line
Count
Source
121
2
{
122
    // DisplayName string looks like
123
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
124
    // This discards the part of the string before the first ':' character.
125
    // Another alternative would be to use the displayNamePrefixLength field,
126
    // but this discards everything before the last '.' character, throwing away
127
    // the object name, which is useful.
128
2
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
129
2
    const char* short_name = strchr(display_name, ':');
130
2
    return short_name ? short_name + 1 : display_name;
131
2
}
char const* mp::TypeName<ipc::capnp::messages::Init::ConstructParams>()
Line
Count
Source
121
16
{
122
    // DisplayName string looks like
123
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
124
    // This discards the part of the string before the first ':' character.
125
    // Another alternative would be to use the displayNamePrefixLength field,
126
    // but this discards everything before the last '.' character, throwing away
127
    // the object name, which is useful.
128
16
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
129
16
    const char* short_name = strchr(display_name, ':');
130
16
    return short_name ? short_name + 1 : display_name;
131
16
}
char const* mp::TypeName<ipc::capnp::messages::Init::ConstructResults>()
Line
Count
Source
121
16
{
122
    // DisplayName string looks like
123
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
124
    // This discards the part of the string before the first ':' character.
125
    // Another alternative would be to use the displayNamePrefixLength field,
126
    // but this discards everything before the last '.' character, throwing away
127
    // the object name, which is useful.
128
16
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
129
16
    const char* short_name = strchr(display_name, ':');
130
16
    return short_name ? short_name + 1 : display_name;
131
16
}
char const* mp::TypeName<ipc::capnp::messages::Init::MakeEchoParams>()
Line
Count
Source
121
12
{
122
    // DisplayName string looks like
123
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
124
    // This discards the part of the string before the first ':' character.
125
    // Another alternative would be to use the displayNamePrefixLength field,
126
    // but this discards everything before the last '.' character, throwing away
127
    // the object name, which is useful.
128
12
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
129
12
    const char* short_name = strchr(display_name, ':');
130
12
    return short_name ? short_name + 1 : display_name;
131
12
}
char const* mp::TypeName<ipc::capnp::messages::Init::MakeEchoResults>()
Line
Count
Source
121
12
{
122
    // DisplayName string looks like
123
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
124
    // This discards the part of the string before the first ':' character.
125
    // Another alternative would be to use the displayNamePrefixLength field,
126
    // but this discards everything before the last '.' character, throwing away
127
    // the object name, which is useful.
128
12
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
129
12
    const char* short_name = strchr(display_name, ':');
130
12
    return short_name ? short_name + 1 : display_name;
131
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
121
4
{
122
    // DisplayName string looks like
123
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
124
    // This discards the part of the string before the first ':' character.
125
    // Another alternative would be to use the displayNamePrefixLength field,
126
    // but this discards everything before the last '.' character, throwing away
127
    // the object name, which is useful.
128
4
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
129
4
    const char* short_name = strchr(display_name, ':');
130
4
    return short_name ? short_name + 1 : display_name;
131
4
}
char const* mp::TypeName<ipc::capnp::messages::Init::MakeRpcResults>()
Line
Count
Source
121
4
{
122
    // DisplayName string looks like
123
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
124
    // This discards the part of the string before the first ':' character.
125
    // Another alternative would be to use the displayNamePrefixLength field,
126
    // but this discards everything before the last '.' character, throwing away
127
    // the object name, which is useful.
128
4
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
129
4
    const char* short_name = strchr(display_name, ':');
130
4
    return short_name ? short_name + 1 : display_name;
131
4
}
char const* mp::TypeName<ipc::capnp::messages::Echo::DestroyParams>()
Line
Count
Source
121
12
{
122
    // DisplayName string looks like
123
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
124
    // This discards the part of the string before the first ':' character.
125
    // Another alternative would be to use the displayNamePrefixLength field,
126
    // but this discards everything before the last '.' character, throwing away
127
    // the object name, which is useful.
128
12
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
129
12
    const char* short_name = strchr(display_name, ':');
130
12
    return short_name ? short_name + 1 : display_name;
131
12
}
char const* mp::TypeName<ipc::capnp::messages::Echo::DestroyResults>()
Line
Count
Source
121
12
{
122
    // DisplayName string looks like
123
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
124
    // This discards the part of the string before the first ':' character.
125
    // Another alternative would be to use the displayNamePrefixLength field,
126
    // but this discards everything before the last '.' character, throwing away
127
    // the object name, which is useful.
128
12
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
129
12
    const char* short_name = strchr(display_name, ':');
130
12
    return short_name ? short_name + 1 : display_name;
131
12
}
char const* mp::TypeName<ipc::capnp::messages::Echo::EchoParams>()
Line
Count
Source
121
12
{
122
    // DisplayName string looks like
123
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
124
    // This discards the part of the string before the first ':' character.
125
    // Another alternative would be to use the displayNamePrefixLength field,
126
    // but this discards everything before the last '.' character, throwing away
127
    // the object name, which is useful.
128
12
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
129
12
    const char* short_name = strchr(display_name, ':');
130
12
    return short_name ? short_name + 1 : display_name;
131
12
}
char const* mp::TypeName<ipc::capnp::messages::Echo::EchoResults>()
Line
Count
Source
121
12
{
122
    // DisplayName string looks like
123
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
124
    // This discards the part of the string before the first ':' character.
125
    // Another alternative would be to use the displayNamePrefixLength field,
126
    // but this discards everything before the last '.' character, throwing away
127
    // the object name, which is useful.
128
12
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
129
12
    const char* short_name = strchr(display_name, ':');
130
12
    return short_name ? short_name + 1 : display_name;
131
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::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
121
4
{
122
    // DisplayName string looks like
123
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
124
    // This discards the part of the string before the first ':' character.
125
    // Another alternative would be to use the displayNamePrefixLength field,
126
    // but this discards everything before the last '.' character, throwing away
127
    // the object name, which is useful.
128
4
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
129
4
    const char* short_name = strchr(display_name, ':');
130
4
    return short_name ? short_name + 1 : display_name;
131
4
}
char const* mp::TypeName<ipc::capnp::messages::Rpc::ExecuteRpcResults>()
Line
Count
Source
121
4
{
122
    // DisplayName string looks like
123
    // "interfaces/capnp/common.capnp:ChainNotifications.resendWalletTransactions$Results"
124
    // This discards the part of the string before the first ':' character.
125
    // Another alternative would be to use the displayNamePrefixLength field,
126
    // but this discards everything before the last '.' character, throwing away
127
    // the object name, which is useful.
128
4
    const char* display_name = ::capnp::Schema::from<T>().getProto().getDisplayName().cStr();
129
4
    const char* short_name = strchr(display_name, ':');
130
4
    return short_name ? short_name + 1 : display_name;
131
4
}
132
133
//! Convenient wrapper around std::variant<T*, T>
134
template <typename T>
135
struct PtrOrValue {
136
    std::variant<T*, T> data;
137
138
    template <typename... Args>
139
664
    PtrOrValue(T* ptr, Args&&... args) : data(ptr ? ptr : std::variant<T*, T>{std::in_place_type<T>, std::forward<Args>(args)...}) {}
140
141
675
    T& operator*() { return data.index() ? std::get<T>(data) : *std::get<T*>(data); }
142
675
    T* operator->() { return &**this; }
143
    T& operator*() const { return data.index() ? std::get<T>(data) : *std::get<T*>(data); }
144
    T* operator->() const { return &**this; }
145
};
146
147
// Annotated mutex and lock class (https://clang.llvm.org/docs/ThreadSafetyAnalysis.html)
148
#if defined(__clang__) && (!defined(SWIG))
149
#define MP_TSA(x)   __attribute__((x))
150
#else
151
#define MP_TSA(x)   // no-op
152
#endif
153
154
#define MP_CAPABILITY(x)        MP_TSA(capability(x))
155
#define MP_SCOPED_CAPABILITY    MP_TSA(scoped_lockable)
156
#define MP_REQUIRES(x)          MP_TSA(requires_capability(x))
157
#define MP_ACQUIRE(...)         MP_TSA(acquire_capability(__VA_ARGS__))
158
#define MP_RELEASE(...)         MP_TSA(release_capability(__VA_ARGS__))
159
#define MP_ASSERT_CAPABILITY(x) MP_TSA(assert_capability(x))
160
#define MP_GUARDED_BY(x)        MP_TSA(guarded_by(x))
161
#define MP_NO_TSA               MP_TSA(no_thread_safety_analysis)
162
163
class MP_CAPABILITY("mutex") Mutex {
164
public:
165
0
    void lock() MP_ACQUIRE() { m_mutex.lock(); }
166
0
    void unlock() MP_RELEASE() { m_mutex.unlock(); }
167
168
    std::mutex m_mutex;
169
};
170
171
class MP_SCOPED_CAPABILITY Lock {
172
public:
173
1.19k
    explicit Lock(Mutex& m) MP_ACQUIRE(m) : m_lock(m.m_mutex) {}
174
1.19k
    ~Lock() MP_RELEASE() = default;
175
431
    void unlock() MP_RELEASE() { m_lock.unlock(); }
176
426
    void lock() MP_ACQUIRE() { m_lock.lock(); }
177
    void assert_locked(Mutex& mutex) MP_ASSERT_CAPABILITY() MP_ASSERT_CAPABILITY(mutex)
178
664
    {
179
664
        assert(m_lock.mutex() == &mutex.m_mutex);
180
664
        assert(m_lock);
181
664
    }
182
183
    std::unique_lock<std::mutex> m_lock;
184
};
185
186
template<typename T>
187
struct GuardedRef
188
{
189
    Mutex& mutex;
190
    T& ref MP_GUARDED_BY(mutex);
191
};
192
193
// CTAD for Clang 16: GuardedRef{mutex, x} -> GuardedRef<decltype(x)>
194
template <class U>
195
GuardedRef(Mutex&, U&) -> GuardedRef<U>;
196
197
//! Analog to std::lock_guard that unlocks instead of locks.
198
template <typename Lock>
199
struct UnlockGuard
200
{
201
423
    UnlockGuard(Lock& lock) : m_lock(lock) { m_lock.unlock(); }
202
423
    ~UnlockGuard() { m_lock.lock(); }
203
    Lock& m_lock;
204
};
205
206
template <typename Lock, typename Callback>
207
void Unlock(Lock& lock, Callback&& callback)
208
423
{
209
423
    const UnlockGuard<Lock> unlock(lock);
210
423
    callback();
211
423
}
void mp::Unlock<mp::Lock, kj::Function<void ()>&>(mp::Lock&, kj::Function<void ()>&)
Line
Count
Source
208
207
{
209
207
    const UnlockGuard<Lock> unlock(lock);
210
207
    callback();
211
207
}
void mp::Unlock<mp::Lock, std::function<void ()>&>(mp::Lock&, std::function<void ()>&)
Line
Count
Source
208
20
{
209
20
    const UnlockGuard<Lock> unlock(lock);
210
20
    callback();
211
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
208
181
{
209
181
    const UnlockGuard<Lock> unlock(lock);
210
181
    callback();
211
181
}
void mp::Unlock<mp::Lock, std::function<void ()> const&>(mp::Lock&, std::function<void ()> const&)
Line
Count
Source
208
15
{
209
15
    const UnlockGuard<Lock> unlock(lock);
210
15
    callback();
211
15
}
212
213
//! Invoke a function and run a follow-up action before returning the original
214
//! result.
215
//!
216
//! This can be used similarly to KJ_DEFER to run cleanup code, but works better
217
//! if the cleanup function can throw because it avoids clang bug
218
//! https://github.com/llvm/llvm-project/issues/12658 which skips calling
219
//! destructors in that case and can lead to memory leaks. Also, if both
220
//! functions throw, this lets one exception take precedence instead of
221
//! terminating due to having two active exceptions.
222
template <typename Fn, typename After>
223
decltype(auto) TryFinally(Fn&& fn, After&& after)
224
36
{
225
36
    bool success{false};
226
36
    using R = std::invoke_result_t<Fn>;
227
36
    try {
228
36
        if constexpr (std::is_void_v<R>) {
229
10
            std::forward<Fn>(fn)();
230
10
            success = true;
231
10
            std::forward<After>(after)();
232
10
            return;
233
26
        } else {
234
26
            decltype(auto) result = std::forward<Fn>(fn)();
235
26
            success = true;
236
26
            std::forward<After>(after)();
237
26
            return result;
238
26
        }
239
36
    } catch (...) {
240
0
        if (!success) std::forward<After>(after)();
241
0
        throw;
242
0
    }
243
36
}
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
224
1
{
225
1
    bool success{false};
226
1
    using R = std::invoke_result_t<Fn>;
227
1
    try {
228
        if constexpr (std::is_void_v<R>) {
229
            std::forward<Fn>(fn)();
230
            success = true;
231
            std::forward<After>(after)();
232
            return;
233
1
        } else {
234
1
            decltype(auto) result = std::forward<Fn>(fn)();
235
1
            success = true;
236
1
            std::forward<After>(after)();
237
1
            return result;
238
1
        }
239
1
    } catch (...) {
240
0
        if (!success) std::forward<After>(after)();
241
0
        throw;
242
0
    }
243
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
224
1
{
225
1
    bool success{false};
226
1
    using R = std::invoke_result_t<Fn>;
227
1
    try {
228
        if constexpr (std::is_void_v<R>) {
229
            std::forward<Fn>(fn)();
230
            success = true;
231
            std::forward<After>(after)();
232
            return;
233
1
        } else {
234
1
            decltype(auto) result = std::forward<Fn>(fn)();
235
1
            success = true;
236
1
            std::forward<After>(after)();
237
1
            return result;
238
1
        }
239
1
    } catch (...) {
240
0
        if (!success) std::forward<After>(after)();
241
0
        throw;
242
0
    }
243
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
224
1
{
225
1
    bool success{false};
226
1
    using R = std::invoke_result_t<Fn>;
227
1
    try {
228
        if constexpr (std::is_void_v<R>) {
229
            std::forward<Fn>(fn)();
230
            success = true;
231
            std::forward<After>(after)();
232
            return;
233
1
        } else {
234
1
            decltype(auto) result = std::forward<Fn>(fn)();
235
1
            success = true;
236
1
            std::forward<After>(after)();
237
1
            return result;
238
1
        }
239
1
    } catch (...) {
240
0
        if (!success) std::forward<After>(after)();
241
0
        throw;
242
0
    }
243
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
224
1
{
225
1
    bool success{false};
226
1
    using R = std::invoke_result_t<Fn>;
227
1
    try {
228
        if constexpr (std::is_void_v<R>) {
229
            std::forward<Fn>(fn)();
230
            success = true;
231
            std::forward<After>(after)();
232
            return;
233
1
        } else {
234
1
            decltype(auto) result = std::forward<Fn>(fn)();
235
1
            success = true;
236
1
            std::forward<After>(after)();
237
1
            return result;
238
1
        }
239
1
    } catch (...) {
240
0
        if (!success) std::forward<After>(after)();
241
0
        throw;
242
0
    }
243
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
224
1
{
225
1
    bool success{false};
226
1
    using R = std::invoke_result_t<Fn>;
227
1
    try {
228
        if constexpr (std::is_void_v<R>) {
229
            std::forward<Fn>(fn)();
230
            success = true;
231
            std::forward<After>(after)();
232
            return;
233
1
        } else {
234
1
            decltype(auto) result = std::forward<Fn>(fn)();
235
1
            success = true;
236
1
            std::forward<After>(after)();
237
1
            return result;
238
1
        }
239
1
    } catch (...) {
240
0
        if (!success) std::forward<After>(after)();
241
0
        throw;
242
0
    }
243
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
224
1
{
225
1
    bool success{false};
226
1
    using R = std::invoke_result_t<Fn>;
227
1
    try {
228
        if constexpr (std::is_void_v<R>) {
229
            std::forward<Fn>(fn)();
230
            success = true;
231
            std::forward<After>(after)();
232
            return;
233
1
        } else {
234
1
            decltype(auto) result = std::forward<Fn>(fn)();
235
1
            success = true;
236
1
            std::forward<After>(after)();
237
1
            return result;
238
1
        }
239
1
    } catch (...) {
240
0
        if (!success) std::forward<After>(after)();
241
0
        throw;
242
0
    }
243
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
224
10
{
225
10
    bool success{false};
226
10
    using R = std::invoke_result_t<Fn>;
227
10
    try {
228
10
        if constexpr (std::is_void_v<R>) {
229
10
            std::forward<Fn>(fn)();
230
10
            success = true;
231
10
            std::forward<After>(after)();
232
10
            return;
233
        } else {
234
            decltype(auto) result = std::forward<Fn>(fn)();
235
            success = true;
236
            std::forward<After>(after)();
237
            return result;
238
        }
239
10
    } catch (...) {
240
0
        if (!success) std::forward<After>(after)();
241
0
        throw;
242
0
    }
243
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
224
6
{
225
6
    bool success{false};
226
6
    using R = std::invoke_result_t<Fn>;
227
6
    try {
228
        if constexpr (std::is_void_v<R>) {
229
            std::forward<Fn>(fn)();
230
            success = true;
231
            std::forward<After>(after)();
232
            return;
233
6
        } else {
234
6
            decltype(auto) result = std::forward<Fn>(fn)();
235
6
            success = true;
236
6
            std::forward<After>(after)();
237
6
            return result;
238
6
        }
239
6
    } catch (...) {
240
0
        if (!success) std::forward<After>(after)();
241
0
        throw;
242
0
    }
243
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
224
4
{
225
4
    bool success{false};
226
4
    using R = std::invoke_result_t<Fn>;
227
4
    try {
228
        if constexpr (std::is_void_v<R>) {
229
            std::forward<Fn>(fn)();
230
            success = true;
231
            std::forward<After>(after)();
232
            return;
233
4
        } else {
234
4
            decltype(auto) result = std::forward<Fn>(fn)();
235
4
            success = true;
236
4
            std::forward<After>(after)();
237
4
            return result;
238
4
        }
239
4
    } catch (...) {
240
0
        if (!success) std::forward<After>(after)();
241
0
        throw;
242
0
    }
243
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::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
224
4
{
225
4
    bool success{false};
226
4
    using R = std::invoke_result_t<Fn>;
227
4
    try {
228
        if constexpr (std::is_void_v<R>) {
229
            std::forward<Fn>(fn)();
230
            success = true;
231
            std::forward<After>(after)();
232
            return;
233
4
        } else {
234
4
            decltype(auto) result = std::forward<Fn>(fn)();
235
4
            success = true;
236
4
            std::forward<After>(after)();
237
4
            return result;
238
4
        }
239
4
    } catch (...) {
240
0
        if (!success) std::forward<After>(after)();
241
0
        throw;
242
0
    }
243
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
224
6
{
225
6
    bool success{false};
226
6
    using R = std::invoke_result_t<Fn>;
227
6
    try {
228
        if constexpr (std::is_void_v<R>) {
229
            std::forward<Fn>(fn)();
230
            success = true;
231
            std::forward<After>(after)();
232
            return;
233
6
        } else {
234
6
            decltype(auto) result = std::forward<Fn>(fn)();
235
6
            success = true;
236
6
            std::forward<After>(after)();
237
6
            return result;
238
6
        }
239
6
    } catch (...) {
240
0
        if (!success) std::forward<After>(after)();
241
0
        throw;
242
0
    }
243
6
}
244
245
//! Format current thread name as "{exe_name}-{$pid}/{thread_name}-{$tid}".
246
std::string ThreadName(const char* exe_name);
247
248
//! Escape binary string for use in log so it doesn't trigger unicode decode
249
//! errors in python unit tests.
250
std::string LogEscape(const kj::StringTree& string, size_t max_size);
251
252
//! Callback type used by SpawnProcess below.
253
using FdToArgsFn = std::function<std::vector<std::string>(int fd)>;
254
255
//! Spawn a new process that communicates with the current process over a socket
256
//! pair. Returns pid through an output argument, and file descriptor for the
257
//! local side of the socket.
258
//! The fd_to_args callback is invoked in the parent process before fork().
259
//! It must not rely on child pid/state, and must return the command line
260
//! arguments that should be used to execute the process. Embed the remote file
261
//! descriptor number in whatever format the child process expects.
262
int SpawnProcess(int& pid, FdToArgsFn&& fd_to_args);
263
264
//! Call execvp with vector args.
265
//! Not safe to call in a post-fork child of a multi-threaded process.
266
//! Currently only used by mpgen at build time.
267
void ExecProcess(const std::vector<std::string>& args);
268
269
//! Wait for a process to exit and return its exit code.
270
int WaitProcess(int pid);
271
272
0
inline char* CharCast(char* c) { return c; }
273
0
inline char* CharCast(unsigned char* c) { return (char*)c; }
274
20
inline const char* CharCast(const char* c) { return c; }
275
0
inline const char* CharCast(const unsigned char* c) { return (const char*)c; }
276
277
//! Exception thrown from code executing an IPC call that is interrupted.
278
struct InterruptException final : std::exception {
279
0
    explicit InterruptException(std::string message) : m_message(std::move(message)) {}
280
0
    const char* what() const noexcept override { return m_message.c_str(); }
281
    std::string m_message;
282
};
283
284
class CancelProbe;
285
286
//! Helper class that detects when a promise is canceled. Used to detect
287
//! canceled requests and prevent potential crashes on unclean disconnects.
288
//!
289
//! In the future, this could also be used to support a way for wrapped C++
290
//! methods to detect cancellation (like approach #4 in
291
//! https://github.com/bitcoin/bitcoin/issues/33575).
292
class CancelMonitor
293
{
294
public:
295
    inline ~CancelMonitor();
296
    inline void promiseDestroyed(CancelProbe& probe);
297
298
    bool m_canceled{false};
299
    std::function<void()> m_on_cancel;
300
    CancelProbe* m_probe{nullptr};
301
};
302
303
//! Helper object to attach to a promise and update a CancelMonitor.
304
class CancelProbe
305
{
306
public:
307
26
    CancelProbe(CancelMonitor& monitor) : m_monitor(&monitor)
308
26
    {
309
26
        assert(!monitor.m_probe);
310
26
        monitor.m_probe = this;
311
26
    }
312
    ~CancelProbe()
313
26
    {
314
26
        if (m_monitor) m_monitor->promiseDestroyed(*this);
315
26
    }
316
    CancelMonitor* m_monitor;
317
};
318
319
CancelMonitor::~CancelMonitor()
320
26
{
321
26
    if (m_probe) {
322
26
        assert(m_probe->m_monitor == this);
323
26
        m_probe->m_monitor = nullptr;
324
26
        m_probe = nullptr;
325
26
    }
326
26
}
327
328
void CancelMonitor::promiseDestroyed(CancelProbe& probe)
329
0
{
330
    // If promise is being destroyed, assume the promise has been canceled. In
331
    // theory this method could be called when a promise was fulfilled or
332
    // rejected rather than canceled, but it's safe to assume that's not the
333
    // case because the CancelMonitor class is meant to be used inside code
334
    // fulfilling or rejecting the promise and destroyed before doing so.
335
0
    assert(m_probe == &probe);
336
0
    m_canceled = true;
337
0
    if (m_on_cancel) m_on_cancel();
338
0
    m_probe = nullptr;
339
0
}
340
} // namespace mp
341
342
#endif // MP_UTIL_H