mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-08-30 07:51:39 +02:00
Merge bitcoin/bitcoin#28721: multiprocess compatibility updates
3b70f7b615
doc: fix broken doc/design/multiprocess.md links after #24352 (Ryan Ofsky)6d43aad742
span: Make Span template deduction guides work in SFINAE context (Ryan Ofsky)8062c3bdb9
util: Add ArgsManager SetConfigFilePath method (Ryan Ofsky)441d00c60f
interfaces: Rename CalculateBumpFees methods to be compatible with capn'proto (Ryan Ofsky)156f49d682
interfaces: Change getUnspentOutput return type to avoid multiprocess segfault (Ryan Ofsky)4978754c00
interfaces: Add schedulerMockForward method so mockscheduler RPC can work across processes (Ryan Ofsky)924327eaf3
interfaces: Fix const virtual method that breaks multiprocess support (Ryan Ofsky)82a379eca8
streams: Add SpanReader ignore method (Russell Yanofsky) Pull request description: This is a collection of small changes to interfaces and code which were needed as part of multiprocess PR #10102, but have been moved here to make that PR smaller. All of these changes are refactoring changes which do not affect behavior of current code --- This PR is part of the [process separation project](https://github.com/bitcoin/bitcoin/issues/28722). ACKs for top commit: achow101: ACK3b70f7b615
naumenkogs: ACK3b70f7b615
maflcko: re-ACK3b70f7b615
🎆 Tree-SHA512: 2368772b887056ad8a9f84c299cfde76ba45943770e3b5353130580900afa9611302195b899ced7b6e303b11f053ff204cae7c28ff4e12c55562fcc81119ba4c
This commit is contained in:
@@ -19,7 +19,7 @@ The `-debug=ipc` command line option can be used to see requests and responses b
|
||||
|
||||
## Installation
|
||||
|
||||
The multiprocess feature requires [Cap'n Proto](https://capnproto.org/) and [libmultiprocess](https://github.com/chaincodelabs/libmultiprocess) as dependencies. A simple way to get starting using it without installing these dependencies manually is to use the [depends system](../depends) with the `MULTIPROCESS=1` [dependency option](../depends#dependency-options) passed to make:
|
||||
The multiprocess feature requires [Cap'n Proto](https://capnproto.org/) and [libmultiprocess](https://github.com/chaincodelabs/libmultiprocess) as dependencies. A simple way to get starting using it without installing these dependencies manually is to use the [depends system](../../depends) with the `MULTIPROCESS=1` [dependency option](../../depends#dependency-options) passed to make:
|
||||
|
||||
```
|
||||
cd <BITCOIN_SOURCE_DIRECTORY>
|
||||
@@ -32,12 +32,12 @@ BITCOIND=bitcoin-node test/functional/test_runner.py
|
||||
|
||||
The configure script will pick up settings and library locations from the depends directory, so there is no need to pass `--enable-multiprocess` as a separate flag when using the depends system (it's controlled by the `MULTIPROCESS=1` option).
|
||||
|
||||
Alternately, you can install [Cap'n Proto](https://capnproto.org/) and [libmultiprocess](https://github.com/chaincodelabs/libmultiprocess) packages on your system, and just run `./configure --enable-multiprocess` without using the depends system. The configure script will be able to locate the installed packages via [pkg-config](https://www.freedesktop.org/wiki/Software/pkg-config/). See [Installation](https://github.com/chaincodelabs/libmultiprocess#installation) section of the libmultiprocess readme for install steps. See [build-unix.md](build-unix.md) and [build-osx.md](build-osx.md) for information about installing dependencies in general.
|
||||
Alternately, you can install [Cap'n Proto](https://capnproto.org/) and [libmultiprocess](https://github.com/chaincodelabs/libmultiprocess) packages on your system, and just run `./configure --enable-multiprocess` without using the depends system. The configure script will be able to locate the installed packages via [pkg-config](https://www.freedesktop.org/wiki/Software/pkg-config/). See [Installation](https://github.com/chaincodelabs/libmultiprocess/blob/master/doc/install.md) section of the libmultiprocess readme for install steps. See [build-unix.md](../build-unix.md) and [build-osx.md](../build-osx.md) for information about installing dependencies in general.
|
||||
|
||||
## IPC implementation details
|
||||
|
||||
Cross process Node, Wallet, and Chain interfaces are defined in
|
||||
[`src/interfaces/`](../src/interfaces/). These are C++ classes which follow
|
||||
[`src/interfaces/`](../../src/interfaces/). These are C++ classes which follow
|
||||
[conventions](../developer-notes.md#internal-interface-guidelines), like passing
|
||||
serializable arguments so they can be called from different processes, and
|
||||
making methods pure virtual so they can have proxy implementations that forward
|
||||
@@ -58,7 +58,7 @@ actual serialization and socket communication.
|
||||
As much as possible, calls between processes are meant to work the same as
|
||||
calls within a single process without adding limitations or requiring extra
|
||||
implementation effort. Processes communicate with each other by calling regular
|
||||
[C++ interface methods](../src/interfaces/README.md). Method arguments and
|
||||
[C++ interface methods](../../src/interfaces/README.md). Method arguments and
|
||||
return values are automatically serialized and sent between processes. Object
|
||||
references and `std::function` arguments are automatically tracked and mapped
|
||||
to allow invoked code to call back into invoking code at any time, and there is
|
||||
|
Reference in New Issue
Block a user