refactor(s2n-quic-core): simplify clock and timer traits #1733
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 of changes:
While implementing the AF_XDP IO provider, I wanted to make a generic event loop implementation so I didn't have to copy/paste the one from the tokio provider. Today, the clock to get the current time is generic. However, there's no trait for getting a timer from the clock and
await
ing on its expiration.In this change, the clock and timer traits are refactored to make it possible to use in the IO provider event loop. This is done by adding a
ClockWithTimer
trait that is used in the IO event loop.Call-outs:
While I was changing the interface, I went through and removed all references to
s2n-quic-platform
ins2n-quic-transport
with thetesting
module ins2n-quic-core
. This simplifies the testing dependencies a bit and makes it so every crate can use the clock in a consistent way. The only last place that uses the time module is the default address token provider, and I've opened an issue to track that separately: #1738.Testing:
Since this is just shuffling things around, the existing tests should cover the changes.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.