RFC: sans-io Client and async example using bitreq
#27
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.
Description
Gathering feedback on a new sans-io implementation. To make it work I restructured the API to allow consumers to send their own requests. This way the library need only be concerned with modeling the RPCs and handling responses.
Motivation
Right now we're limited to making RPC requests with something that implements the
Transporttrait. This is general enough to be implemented by consumers of the library but doesn't immediately support, for example, asynchronous I/O out of the box. The benefit of "sans-io" is that we eliminate an entire class of issues related to network I/O. The result is better separation of concerns, ease of maintenance, and increased flexibility for the user who is no longer forced to conform to a specificTransportAPI.Summary of Changes
ClientAPI to form thejsonrpc::Requestto be executed by the callerbitreqout of the box for common use caseexamples/directory for API usage example