Use only one networking service for all chains #1398
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Close #111
This PR refactors the networking service so that it just has a single function:
add_chain
.add_chain
returns anArc<NetworkingServiceChain>
that can be used to interact with that chain. Once all theArc
s are dead, the chain is removed from the networking service.The
Client
now has a single networking service that is initialized lazily.I've had to introduce a small hack because
start_services
can't be made async before #735. For this reason, adding a chain is done by sending a sender to the background, rather than receiving a receiver, which would have been more clean.