Make daemon tasks self-contained; introduce NetDirProvider
The various background daemon tasks that `arti-client` used to spawn are now handled inside their respective crates instead, with functions provided to spawn them that return `TaskHandle`s. This required introducing a new trait, `NetDirProvider`, which steals some functionality from the `DirProvider` trait to enable `tor-circmgr` to depend on it (`tor-circmgr` is a dependency of `tor-dirmgr`, so it can't depend on `DirProvider` directly). While we're at it, we also make some of the tasks wait for events from the `NetDirProvider` instead of sleeping, slightly increasing efficiency.
Showing
- Cargo.lock 1 addition, 0 deletionsCargo.lock
- crates/arti-client/src/client.rs 14 additions, 261 deletionscrates/arti-client/src/client.rs
- crates/arti-client/src/err.rs 5 additions, 0 deletionscrates/arti-client/src/err.rs
- crates/tor-chanmgr/src/lib.rs 41 additions, 0 deletionscrates/tor-chanmgr/src/lib.rs
- crates/tor-circmgr/src/lib.rs 251 additions, 3 deletionscrates/tor-circmgr/src/lib.rs
- crates/tor-dirmgr/src/event.rs 3 additions, 20 deletionscrates/tor-dirmgr/src/event.rs
- crates/tor-dirmgr/src/lib.rs 9 additions, 16 deletionscrates/tor-dirmgr/src/lib.rs
- crates/tor-netdir/Cargo.toml 1 addition, 0 deletionscrates/tor-netdir/Cargo.toml
- crates/tor-netdir/src/lib.rs 50 additions, 0 deletionscrates/tor-netdir/src/lib.rs
- crates/tor-rtcompat/src/scheduler.rs 6 additions, 0 deletionscrates/tor-rtcompat/src/scheduler.rs
- doc/semver_status.md 1 addition, 0 deletionsdoc/semver_status.md
Loading
Please register or sign in to comment