0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-02-04 10:07:27 -05:00
bitcoin-bitcoin-core/src/interfaces
Wladimir J. van der Laan 6196e93001
Merge #16963: wallet: Fix unique_ptr usage in boost::signals2
6d6a7a8403 gui: Fix duplicate wallet showing up (João Barbosa)
81ea66c30e Drop signal CClientUIInterface::LoadWallet (Russell Yanofsky)

Pull request description:

  This PR includes 2 fixes:
   - prevent GUI LoadWallet handlers from crashing on startup when multiple handlers are attached, because the first handler takes ownership of the wallet unique pointer. Now every handler will receive its own unique pointer;

   - prevent showing a wallet twice in the GUI on startup due to a race with `loadwallet`.

  Fixes #16937

ACKs for top commit:
  fjahr:
    code review ACK 6d6a7a8403
  ryanofsky:
    Code review ACK 6d6a7a8403. No changes since last ACK other than rebase due to #17070
  kallewoof:
    Code review ACK 6d6a7a8403

Tree-SHA512: 7f0658c9011f81dfa176a094c2263448ee1d14fda7dc94e8b55ee9c8b81538bd2d1e4bf8a8dbfcd029ebfc9feb6d3cda9dee3f911122df0a4b1e0ca75f653ba4
2020-01-08 15:58:33 +01:00
..
chain.cpp Merge #16963: wallet: Fix unique_ptr usage in boost::signals2 2020-01-08 15:58:33 +01:00
chain.h Merge #16963: wallet: Fix unique_ptr usage in boost::signals2 2020-01-08 15:58:33 +01:00
handler.cpp Drop signal CClientUIInterface::LoadWallet 2019-10-26 14:55:30 +01:00
handler.h Drop signal CClientUIInterface::LoadWallet 2019-10-26 14:55:30 +01:00
node.cpp Merge #16963: wallet: Fix unique_ptr usage in boost::signals2 2020-01-08 15:58:33 +01:00
node.h scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
README.md Suggested interfaces::Chain cleanups from #15288 2019-03-04 15:57:58 -05:00
wallet.cpp scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
wallet.h scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00

Internal c++ interfaces

The following interfaces are defined here:

  • Chain — used by wallet to access blockchain and mempool state. Added in #14437, #14711, #15288, and #10973.

  • ChainClient — used by node to start & stop Chain clients. Added in #14437.

  • Node — used by GUI to start & stop bitcoin node. Added in #10244.

  • Wallet — used by GUI to access wallets. Added in #10244.

  • Handler — returned by handleEvent methods on interfaces above and used to manage lifetimes of event handlers.

  • Init — used by multiprocess code to access interfaces above on startup. Added in #10102.

The interfaces above define boundaries between major components of bitcoin code (node, wallet, and gui), making it possible for them to run in different processes, and be tested, developed, and understood independently. These interfaces are not currently designed to be stable or to be used externally.