mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-03-28 16:36:04 +01:00
multiprocess: Add echoipc RPC method and test
Add simple interfaces::Echo IPC interface with one method that just takes and returns a string, to test multiprocess framework and provide an example of how it can be used to spawn and call between processes.
This commit is contained in:
18
src/interfaces/echo.cpp
Normal file
18
src/interfaces/echo.cpp
Normal file
@@ -0,0 +1,18 @@
|
||||
// Copyright (c) 2021 The Bitcoin Core developers
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#include <interfaces/echo.h>
|
||||
|
||||
#include <memory>
|
||||
|
||||
namespace interfaces {
|
||||
namespace {
|
||||
class EchoImpl : public Echo
|
||||
{
|
||||
public:
|
||||
std::string echo(const std::string& echo) override { return echo; }
|
||||
};
|
||||
} // namespace
|
||||
std::unique_ptr<Echo> MakeEcho() { return std::make_unique<EchoImpl>(); }
|
||||
} // namespace interfaces
|
||||
26
src/interfaces/echo.h
Normal file
26
src/interfaces/echo.h
Normal file
@@ -0,0 +1,26 @@
|
||||
// Copyright (c) 2021 The Bitcoin Core developers
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#ifndef BITCOIN_INTERFACES_ECHO_H
|
||||
#define BITCOIN_INTERFACES_ECHO_H
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
namespace interfaces {
|
||||
//! Simple string echoing interface for testing.
|
||||
class Echo
|
||||
{
|
||||
public:
|
||||
virtual ~Echo() {}
|
||||
|
||||
//! Echo provided string.
|
||||
virtual std::string echo(const std::string& echo) = 0;
|
||||
};
|
||||
|
||||
//! Return implementation of Echo interface.
|
||||
std::unique_ptr<Echo> MakeEcho();
|
||||
} // namespace interfaces
|
||||
|
||||
#endif // BITCOIN_INTERFACES_ECHO_H
|
||||
@@ -3,6 +3,7 @@
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#include <interfaces/chain.h>
|
||||
#include <interfaces/echo.h>
|
||||
#include <interfaces/init.h>
|
||||
#include <interfaces/node.h>
|
||||
#include <interfaces/wallet.h>
|
||||
@@ -11,5 +12,6 @@ namespace interfaces {
|
||||
std::unique_ptr<Node> Init::makeNode() { return {}; }
|
||||
std::unique_ptr<Chain> Init::makeChain() { return {}; }
|
||||
std::unique_ptr<WalletClient> Init::makeWalletClient(Chain& chain) { return {}; }
|
||||
std::unique_ptr<Echo> Init::makeEcho() { return {}; }
|
||||
Ipc* Init::ipc() { return nullptr; }
|
||||
} // namespace interfaces
|
||||
|
||||
@@ -11,6 +11,7 @@ struct NodeContext;
|
||||
|
||||
namespace interfaces {
|
||||
class Chain;
|
||||
class Echo;
|
||||
class Ipc;
|
||||
class Node;
|
||||
class WalletClient;
|
||||
@@ -29,6 +30,7 @@ public:
|
||||
virtual std::unique_ptr<Node> makeNode();
|
||||
virtual std::unique_ptr<Chain> makeChain();
|
||||
virtual std::unique_ptr<WalletClient> makeWalletClient(Chain& chain);
|
||||
virtual std::unique_ptr<Echo> makeEcho();
|
||||
virtual Ipc* ipc();
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user