Expand description
eBrake creates a moving sample window of the last N samples. If the number of failures in the sample window exceeds the threshold, the process or service will be terminated. The sample window is a circular buffer, so the oldest sample will be replaced by the newest sample.
§Examples
This will use the sample and trigger functions separately.
use emergency_brake::*;
let sample_window_size = 25;
let failure_threshold = 3;
let mut ebrake = EBrake::new(sample_window_size, failure_threshold);
for _ in 0..sample_window_size {
ebrake.add_sample(true);
}
assert_eq!(ebrake.trigger(&Trigger::Panic), false);This will use the trigger_on_sample function.
use emergency_brake::*;
let sample_window_size = 25;
let failure_threshold = 3;
let mut ebrake = EBrake::new(sample_window_size, failure_threshold);
for _ in 0..sample_window_size {
ebrake.trigger_on_sample(true, &Trigger::Panic);
}
assert_eq!(ebrake.trigger(&Trigger::Panic), false);Kelsea Blackwell (c) 2023 See LICENSE for licensing information.
Structs§
- EBrake
- The emergency brake is a circular queue of boolean samples with a defined size and tolerance.
Enums§
- Trigger
- The Trigger enum defines the action to take when the emergency brake is triggered.
Traits§
- Emergency
Brake - The EmergencyBrake trait is the interface for the emergency brake.