Conversation
The functionality has been rolled into `tracing`. Who knew?
The `.run()` method in the driver API passed the set of driver channels in a type that was protected by a mutex. There was no need for the serialization because only the driver would be using the channels. Back when I wrote that code, I wasn't as experienced with Rust and so that's how I got it to work. Looking at it not, I realize that I should be able to pass a mutable borrow to the `.run()` method. This commit contains the following changes: - `.run()` now takes a mutable borrow instead of `Arc<Mutex<T>>` - We don't need the `tracing_futures` crate; the `tracing` crate now supports instrumenting futures - The number of async tasks required to support drivers has been reduced; the manager task runs asynchronously, but doesn't spawn a task for the driver. Instead, it itself calls the `.run()` method. It catches any panics, as well. This cuts the number of async tasks in half.
If a driver crashes, we need to set the driver channels into a known state. All types returned by the `Registrator` types must implement the `ResettableState` trait. The default implementation is to do nothing. Most types are fine with this. Types that need to do some resetting, can add their reset logic with this trait.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Removes the need for the mutex in the drivers'
.run()method. Also cuts, by half, the number of async tasks to run the drivers.