Branch data Line data Source code
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 : : Connection& m_connection;
18 : : };
19 : :
20 : : template <typename Output>
21 : 12 : void CustomBuildField(TypeList<>,
22 : : Priority<1>,
23 : : InvokeContext& invoke_context,
24 : : Output&& output,
25 : : typename std::enable_if<std::is_same<decltype(output.get()), ThreadMap::Client>::value>::type* enable = nullptr)
26 : : {
27 [ + - ]: 12 : output.set(kj::heap<ProxyServer<ThreadMap>>(invoke_context.connection));
28 : 12 : }
29 : :
30 : : template <typename Input>
31 : 12 : decltype(auto) CustomReadField(TypeList<>,
32 : : Priority<1>,
33 : : InvokeContext& invoke_context,
34 : : Input&& input,
35 : : typename std::enable_if<std::is_same<decltype(input.get()), ThreadMap::Client>::value>::type* enable = nullptr)
36 : : {
37 [ + - ]: 12 : invoke_context.connection.m_thread_map = input.get();
38 : 12 : }
39 : : } // namespace mp
40 : :
41 : : #endif // MP_PROXY_TYPE_THREADMAP_H
|