Bitcoin Core
31.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
common
interfaces.cpp
Go to the documentation of this file.
1
// Copyright (c) 2021-present The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#include <
interfaces/echo.h
>
6
#include <
interfaces/handler.h
>
7
8
#include <boost/signals2/connection.hpp>
9
#include <memory>
10
#include <utility>
11
12
namespace
common
{
13
namespace
{
14
class
CleanupHandler :
public
interfaces::Handler
15
{
16
public
:
17
explicit
CleanupHandler(std::function<
void
()> cleanup) : m_cleanup(std::move(cleanup)) {}
18
~CleanupHandler()
override
{
if
(!m_cleanup)
return
; m_cleanup(); m_cleanup =
nullptr
; }
19
void
disconnect()
override
{
if
(!m_cleanup)
return
; m_cleanup(); m_cleanup =
nullptr
; }
20
std::function<void()> m_cleanup;
21
};
22
23
class
SignalHandler :
public
interfaces::Handler
24
{
25
public
:
26
explicit
SignalHandler(boost::signals2::connection connection) : m_connection(std::move(connection)) {}
27
28
void
disconnect()
override
{ m_connection.disconnect(); }
29
30
boost::signals2::scoped_connection m_connection;
31
};
32
33
class
EchoImpl :
public
interfaces::Echo
34
{
35
public
:
36
std::string
echo
(
const
std::string&
echo
)
override
{
return
echo
; }
37
};
38
}
// namespace
39
}
// namespace common
40
41
namespace
interfaces
{
42
std::unique_ptr<Handler>
MakeCleanupHandler
(std::function<
void
()> cleanup)
43
{
44
return
std::make_unique<common::CleanupHandler>(std::move(cleanup));
45
}
46
47
std::unique_ptr<Handler>
MakeSignalHandler
(boost::signals2::connection connection)
48
{
49
return
std::make_unique<common::SignalHandler>(std::move(connection));
50
}
51
52
std::unique_ptr<Echo>
MakeEcho
() {
return
std::make_unique<common::EchoImpl>(); }
53
}
// namespace interfaces
echo.h
handler.h
common
Definition
init.cpp:17
interfaces
Definition
interfaces.cpp:41
interfaces::MakeSignalHandler
std::unique_ptr< Handler > MakeSignalHandler(boost::signals2::connection connection)
Return handler wrapping a boost signal connection.
Definition
interfaces.cpp:47
interfaces::MakeEcho
std::unique_ptr< Echo > MakeEcho()
Return implementation of Echo interface.
Definition
interfaces.cpp:52
interfaces::MakeCleanupHandler
std::unique_ptr< Handler > MakeCleanupHandler(std::function< void()> cleanup)
Return handler wrapping a cleanup function.
Definition
interfaces.cpp:42
echo
static RPCHelpMan echo()
Definition
node.cpp:310
Generated on
for Bitcoin Core by
1.17.0