Coverage Report

Created: 2026-07-08 14:14

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/tmp/bitcoin/src/ipc/libmultiprocess/include/mp/type-threadmap.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_PROXY_TYPE_THREADMAP_H
6
#define MP_PROXY_TYPE_THREADMAP_H
7
8
#include <mp/util.h>
9
10
namespace mp {
11
template <>
12
struct ProxyServer<ThreadMap> final : public virtual ThreadMap::Server
13
{
14
public:
15
    ProxyServer(Connection& connection);
16
    kj::Promise<void> makeThread(MakeThreadContext context) override;
17
    kj::Promise<void> makePool(MakePoolContext context) override;
18
    Connection& m_connection;
19
};
20
21
template <typename Output>
22
void CustomBuildField(TypeList<>,
23
    Priority<1>,
24
    InvokeContext& invoke_context,
25
    Output&& output,
26
    typename std::enable_if<std::is_same<decltype(output.get()), ThreadMap::Client>::value>::type* enable = nullptr)
27
20
{
28
20
    output.set(kj::heap<ProxyServer<ThreadMap>>(invoke_context.connection));
29
20
}
void mp::CustomBuildField<mp::StructField<mp::Accessor<mp::init_fields::ThreadMap, 19>, capnp::Request<ipc::capnp::messages::Init::ConstructParams, ipc::capnp::messages::Init::ConstructResults>>>(mp::TypeList<>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::init_fields::ThreadMap, 19>, capnp::Request<ipc::capnp::messages::Init::ConstructParams, ipc::capnp::messages::Init::ConstructResults>>&&, std::enable_if<std::is_same<decltype(fp2.get()), mp::ThreadMap::Client>::value, void>::type*)
Line
Count
Source
27
10
{
28
10
    output.set(kj::heap<ProxyServer<ThreadMap>>(invoke_context.connection));
29
10
}
void mp::CustomBuildField<mp::StructField<mp::Accessor<mp::init_fields::ThreadMap, 19>, ipc::capnp::messages::Init::ConstructResults::Builder>>(mp::TypeList<>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::init_fields::ThreadMap, 19>, ipc::capnp::messages::Init::ConstructResults::Builder>&&, std::enable_if<std::is_same<decltype(fp2.get()), mp::ThreadMap::Client>::value, void>::type*)
Line
Count
Source
27
10
{
28
10
    output.set(kj::heap<ProxyServer<ThreadMap>>(invoke_context.connection));
29
10
}
30
31
template <typename Input>
32
decltype(auto) CustomReadField(TypeList<>,
33
    Priority<1>,
34
    InvokeContext& invoke_context,
35
    Input&& input,
36
    typename std::enable_if<std::is_same<decltype(input.get()), ThreadMap::Client>::value>::type* enable = nullptr)
37
20
{
38
20
    invoke_context.connection.m_thread_map = input.get();
39
20
}
decltype(auto) mp::CustomReadField<mp::StructField<mp::Accessor<mp::init_fields::ThreadMap, 19>, capnp::Response<ipc::capnp::messages::Init::ConstructResults>>>(mp::TypeList<>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::init_fields::ThreadMap, 19>, capnp::Response<ipc::capnp::messages::Init::ConstructResults>>&&, std::enable_if<std::is_same<decltype(fp2.get()), mp::ThreadMap::Client>::value, void>::type*)
Line
Count
Source
37
10
{
38
10
    invoke_context.connection.m_thread_map = input.get();
39
10
}
decltype(auto) mp::CustomReadField<mp::StructField<mp::Accessor<mp::init_fields::ThreadMap, 19>, ipc::capnp::messages::Init::ConstructParams::Reader const> const&>(mp::TypeList<>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::init_fields::ThreadMap, 19>, ipc::capnp::messages::Init::ConstructParams::Reader const> const&, std::enable_if<std::is_same<decltype(fp2.get()), mp::ThreadMap::Client>::value, void>::type*)
Line
Count
Source
37
10
{
38
10
    invoke_context.connection.m_thread_map = input.get();
39
10
}
40
} // namespace mp
41
42
#endif // MP_PROXY_TYPE_THREADMAP_H