Remove async channels for pushing buffers to be sent #1043
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.
This makes it so that enqueuing buffers to be sent is now done with
PendingSends
for both io-uring and tokio implementations. This means io-uring no longer needs its own tokio runtime just to drive the channel futures to transition back to sync code. Instead of a single downstream channel that can be picked up by any receiver, the sessionpool now just has a vector of pending sends that it round robins between to spread out downstream sends.Since I wanted to remove the tokio runtime from the io-uring thread, this also meant I needed to figure out a way to get rid of the shutdown receiver that was also async, so since all loops have a
PendingSends
now, I just made it so that you can signal the thread that is the receiver for the pending sends to shutdown, consolidating things a bit.