-
- Downloads
Initial cut at a typed event framework for arti (arti#230).
This implements a basic typed event broadcast mechanism, as described in arti#230: consumers of the new `tor-events` crate can emit `TorEvent` events, which others can consume via the `TorEventReceiver`. Under the hood, the crate uses the `async-broadcast` (https://github.com/smol-rs/async-broadcast) crate, and a `futures::mpsc::UnboundedSender` for the event emitters; these are glued together in the `EventReactor`, which must be run in a background thread for things to work. (This is done so event sending is always cheap and non-blocking, since `async-broadcast` senders don't have this functionality.) Additionally, the `TorEventKind` type is used to implement selective event reception / emission: receivers can subscribe to certain event types (and in fact start out receiving nothing), which filters the set of events they receive. Having no subscribers for a given event type means it won't even be emitted in the first place, making things more efficient.
Showing
- Cargo.lock 30 additions, 0 deletionsCargo.lock
- Cargo.toml 1 addition, 0 deletionsCargo.toml
- crates/tor-events/Cargo.toml 22 additions, 0 deletionscrates/tor-events/Cargo.toml
- crates/tor-events/README.md 16 additions, 0 deletionscrates/tor-events/README.md
- crates/tor-events/src/events.rs 33 additions, 0 deletionscrates/tor-events/src/events.rs
- crates/tor-events/src/lib.rs 354 additions, 0 deletionscrates/tor-events/src/lib.rs
Loading
Please register or sign in to comment