1 unstable release
0.1.0 | Jul 5, 2020 |
---|
#35 in #event-system
15KB
206 lines
concurrent-event
An event system for Rust which invokes event handlers in parallel.
lib.rs
:
This crate implements an event which executes registered event handlers concurrently. Additionally, each handler is assigned an ID with which it can be referenced after creation. This allows for associated state for each event handler.
The system was setup to be resistant to adversarial code. In particular, IDs are assigned randomly with sufficiently many bits to be unfeasable to guess. As a consequence, efficiency may suffer. Particularly the IDs are larger than they would need to be if assigned sequentially.
Important Note
We provide no guarantees as the security properties were not rigorously verified. Do not use in critical systems without further investigation!
Example
This is a simple usage scenarion with a custom event handler.
use concurrent_event::Event;
use concurrent_event::handler::EventHandler;
struct Printer;
impl EventHandler<&str> for Printer {
fn on_event(&mut self, arg: &str) {
print!("{}", arg);
}
}
let mut event = Event::<&str, Printer>::new();
event.emit("Hello, World!");
In the handler
package, default implementation for stateless and stateful
event handlers can be found, which take a closure at construction.
Dependencies
~1.8–2.5MB
~42K SLoC