mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-08 10:31:50 -05:00
multiprocess: Add new bitcoin-gui, bitcoin-qt, bitcoin-wallet init implementations
Add separate init implementations instead of sharing existing bitcoind and bitcoin-node ones, so they can start to be differentiated in upcoming commits with node and wallet code no longer linked into the bitcoin-gui binary and wallet code no longer linked into the bitcoin-node binary.
This commit is contained in:
parent
6ef84e0503
commit
d5f985e51f
12 changed files with 121 additions and 13 deletions
|
@ -9,7 +9,7 @@
|
|||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\src\qt\main.cpp" />
|
||||
<ClCompile Include="..\..\src\init\bitcoind.cpp" />
|
||||
<ClCompile Include="..\..\src\init\bitcoin-qt.cpp" />
|
||||
<ResourceCompile Include="..\..\src\qt\res\bitcoin-qt-res.rc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
|
|
@ -10,6 +10,9 @@
|
|||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\src\bitcoin-wallet.cpp" />
|
||||
<ClCompile Include="..\..\src\init\bitcoin-wallet.cpp">
|
||||
<ObjectFileName>$(IntDir)init_bitcoin-wallet.obj</ObjectFileName>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\libbitcoinconsensus\libbitcoinconsensus.vcxproj">
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\src\init\bitcoind.cpp" />
|
||||
<ClCompile Include="..\..\src\init\bitcoin-qt.cpp" />
|
||||
<ClCompile Include="..\..\src\test\util\setup_common.cpp" />
|
||||
<ClCompile Include="..\..\src\qt\test\addressbooktests.cpp" />
|
||||
<ClCompile Include="..\..\src\qt\test\apptests.cpp" />
|
||||
|
|
|
@ -710,6 +710,7 @@ bitcoin_tx_LDADD += $(BOOST_LIBS)
|
|||
|
||||
# bitcoin-wallet binary #
|
||||
bitcoin_wallet_SOURCES = bitcoin-wallet.cpp
|
||||
bitcoin_wallet_SOURCES += init/bitcoin-wallet.cpp
|
||||
bitcoin_wallet_CPPFLAGS = $(bitcoin_bin_cppflags)
|
||||
bitcoin_wallet_CXXFLAGS = $(bitcoin_bin_cxxflags)
|
||||
bitcoin_wallet_LDFLAGS = $(bitcoin_bin_ldflags)
|
||||
|
|
|
@ -338,15 +338,15 @@ bitcoin_qt_libtoolflags = $(AM_LIBTOOLFLAGS) --tag CXX
|
|||
|
||||
qt_bitcoin_qt_CPPFLAGS = $(bitcoin_qt_cppflags)
|
||||
qt_bitcoin_qt_CXXFLAGS = $(bitcoin_qt_cxxflags)
|
||||
qt_bitcoin_qt_SOURCES = $(bitcoin_qt_sources) init/bitcoind.cpp
|
||||
qt_bitcoin_qt_SOURCES = $(bitcoin_qt_sources) init/bitcoin-qt.cpp
|
||||
qt_bitcoin_qt_LDADD = $(bitcoin_qt_ldadd)
|
||||
qt_bitcoin_qt_LDFLAGS = $(bitcoin_qt_ldflags)
|
||||
qt_bitcoin_qt_LIBTOOLFLAGS = $(bitcoin_qt_libtoolflags)
|
||||
|
||||
bitcoin_gui_CPPFLAGS = $(bitcoin_qt_cppflags)
|
||||
bitcoin_gui_CXXFLAGS = $(bitcoin_qt_cxxflags)
|
||||
bitcoin_gui_SOURCES = $(bitcoin_qt_sources) init/bitcoind.cpp
|
||||
bitcoin_gui_LDADD = $(bitcoin_qt_ldadd)
|
||||
bitcoin_gui_SOURCES = $(bitcoin_qt_sources) init/bitcoin-gui.cpp
|
||||
bitcoin_gui_LDADD = $(bitcoin_qt_ldadd) $(LIBBITCOIN_IPC) $(LIBBITCOIN_UTIL) $(LIBMULTIPROCESS_LIBS)
|
||||
bitcoin_gui_LDFLAGS = $(bitcoin_qt_ldflags)
|
||||
bitcoin_gui_LIBTOOLFLAGS = $(bitcoin_qt_libtoolflags)
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ qt_test_test_bitcoin_qt_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_
|
|||
$(QT_INCLUDES) $(QT_TEST_INCLUDES)
|
||||
|
||||
qt_test_test_bitcoin_qt_SOURCES = \
|
||||
init/bitcoind.cpp \
|
||||
init/bitcoin-qt.cpp \
|
||||
qt/test/apptests.cpp \
|
||||
qt/test/rpcnestedtests.cpp \
|
||||
qt/test/test_main.cpp \
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
|
||||
#include <chainparams.h>
|
||||
#include <chainparamsbase.h>
|
||||
#include <interfaces/init.h>
|
||||
#include <logging.h>
|
||||
#include <util/system.h>
|
||||
#include <util/translation.h>
|
||||
|
@ -83,6 +84,13 @@ int main(int argc, char* argv[])
|
|||
util::WinCmdLineArgs winArgs;
|
||||
std::tie(argc, argv) = winArgs.get();
|
||||
#endif
|
||||
|
||||
int exit_status;
|
||||
std::unique_ptr<interfaces::Init> init = interfaces::MakeWalletInit(argc, argv, exit_status);
|
||||
if (!init) {
|
||||
return exit_status;
|
||||
}
|
||||
|
||||
SetupEnvironment();
|
||||
RandomInit();
|
||||
try {
|
||||
|
|
47
src/init/bitcoin-gui.cpp
Normal file
47
src/init/bitcoin-gui.cpp
Normal file
|
@ -0,0 +1,47 @@
|
|||
// 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/chain.h>
|
||||
#include <interfaces/echo.h>
|
||||
#include <interfaces/init.h>
|
||||
#include <interfaces/ipc.h>
|
||||
#include <interfaces/node.h>
|
||||
#include <interfaces/wallet.h>
|
||||
#include <node/context.h>
|
||||
#include <util/system.h>
|
||||
|
||||
#include <memory>
|
||||
|
||||
namespace init {
|
||||
namespace {
|
||||
const char* EXE_NAME = "bitcoin-gui";
|
||||
|
||||
class BitcoinGuiInit : public interfaces::Init
|
||||
{
|
||||
public:
|
||||
BitcoinGuiInit(const char* arg0) : m_ipc(interfaces::MakeIpc(EXE_NAME, arg0, *this))
|
||||
{
|
||||
m_node.args = &gArgs;
|
||||
m_node.init = this;
|
||||
}
|
||||
std::unique_ptr<interfaces::Node> makeNode() override { return interfaces::MakeNode(m_node); }
|
||||
std::unique_ptr<interfaces::Chain> makeChain() override { return interfaces::MakeChain(m_node); }
|
||||
std::unique_ptr<interfaces::WalletClient> makeWalletClient(interfaces::Chain& chain) override
|
||||
{
|
||||
return MakeWalletClient(chain, *Assert(m_node.args));
|
||||
}
|
||||
std::unique_ptr<interfaces::Echo> makeEcho() override { return interfaces::MakeEcho(); }
|
||||
interfaces::Ipc* ipc() override { return m_ipc.get(); }
|
||||
NodeContext m_node;
|
||||
std::unique_ptr<interfaces::Ipc> m_ipc;
|
||||
};
|
||||
} // namespace
|
||||
} // namespace init
|
||||
|
||||
namespace interfaces {
|
||||
std::unique_ptr<Init> MakeGuiInit(int argc, char* argv[])
|
||||
{
|
||||
return std::make_unique<init::BitcoinGuiInit>(argc > 0 ? argv[0] : "");
|
||||
}
|
||||
} // namespace interfaces
|
42
src/init/bitcoin-qt.cpp
Normal file
42
src/init/bitcoin-qt.cpp
Normal file
|
@ -0,0 +1,42 @@
|
|||
// 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/chain.h>
|
||||
#include <interfaces/echo.h>
|
||||
#include <interfaces/init.h>
|
||||
#include <interfaces/node.h>
|
||||
#include <interfaces/wallet.h>
|
||||
#include <node/context.h>
|
||||
#include <util/system.h>
|
||||
|
||||
#include <memory>
|
||||
|
||||
namespace init {
|
||||
namespace {
|
||||
class BitcoinQtInit : public interfaces::Init
|
||||
{
|
||||
public:
|
||||
BitcoinQtInit()
|
||||
{
|
||||
m_node.args = &gArgs;
|
||||
m_node.init = this;
|
||||
}
|
||||
std::unique_ptr<interfaces::Node> makeNode() override { return interfaces::MakeNode(m_node); }
|
||||
std::unique_ptr<interfaces::Chain> makeChain() override { return interfaces::MakeChain(m_node); }
|
||||
std::unique_ptr<interfaces::WalletClient> makeWalletClient(interfaces::Chain& chain) override
|
||||
{
|
||||
return MakeWalletClient(chain, *Assert(m_node.args));
|
||||
}
|
||||
std::unique_ptr<interfaces::Echo> makeEcho() override { return interfaces::MakeEcho(); }
|
||||
NodeContext m_node;
|
||||
};
|
||||
} // namespace
|
||||
} // namespace init
|
||||
|
||||
namespace interfaces {
|
||||
std::unique_ptr<Init> MakeGuiInit(int argc, char* argv[])
|
||||
{
|
||||
return std::make_unique<init::BitcoinQtInit>();
|
||||
}
|
||||
} // namespace interfaces
|
12
src/init/bitcoin-wallet.cpp
Normal file
12
src/init/bitcoin-wallet.cpp
Normal file
|
@ -0,0 +1,12 @@
|
|||
// 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/init.h>
|
||||
|
||||
namespace interfaces {
|
||||
std::unique_ptr<Init> MakeWalletInit(int argc, char* argv[], int& exit_status)
|
||||
{
|
||||
return std::make_unique<Init>();
|
||||
}
|
||||
} // namespace interfaces
|
|
@ -13,7 +13,6 @@
|
|||
#include <interfaces/handler.h>
|
||||
#include <interfaces/init.h>
|
||||
#include <interfaces/node.h>
|
||||
#include <node/context.h>
|
||||
#include <node/ui_interface.h>
|
||||
#include <noui.h>
|
||||
#include <qt/bitcoingui.h>
|
||||
|
@ -462,9 +461,7 @@ int GuiMain(int argc, char* argv[])
|
|||
std::tie(argc, argv) = winArgs.get();
|
||||
#endif
|
||||
|
||||
NodeContext node_context;
|
||||
int unused_exit_status;
|
||||
std::unique_ptr<interfaces::Init> init = interfaces::MakeNodeInit(node_context, argc, argv, unused_exit_status);
|
||||
std::unique_ptr<interfaces::Init> init = interfaces::MakeGuiInit(argc, argv);
|
||||
|
||||
SetupEnvironment();
|
||||
util::ThreadSetInternalName("main");
|
||||
|
|
|
@ -53,9 +53,7 @@ int main(int argc, char* argv[])
|
|||
BasicTestingSetup dummy{CBaseChainParams::REGTEST};
|
||||
}
|
||||
|
||||
NodeContext node_context;
|
||||
int unused_exit_status;
|
||||
std::unique_ptr<interfaces::Init> init = interfaces::MakeNodeInit(node_context, argc, argv, unused_exit_status);
|
||||
std::unique_ptr<interfaces::Init> init = interfaces::MakeGuiInit(argc, argv);
|
||||
gArgs.ForceSetArg("-listen", "0");
|
||||
gArgs.ForceSetArg("-listenonion", "0");
|
||||
gArgs.ForceSetArg("-discover", "0");
|
||||
|
|
Loading…
Add table
Reference in a new issue