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.
This is a new attempt to do a mem transport based on
tokio::sync::mpsc::channel
, replacing #86The big problem of the former PR is that the listener is Clone, so there needs to be some ugly stuff to turn the tokio mpsc channel into a mpmc channel.
So this PR is an experiment to change Listener to be non-Clone and also take a &mut self in accept. Once you do that, implementing a mem channel using a mpsc channel becomes much easier.
I have tried this out in a crate, iroh-blobs, that uses rpc in a pretty complex way, and have not found an issue adapting this. Being able to clone the place that does accept is a bit weird anyway, but I did it because both my favoured memory channel at the time (flume) and the networked channel (quinn) did support it.