Skip to main content

Crate emergency_brake

Crate emergency_brake 

Source
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§

EmergencyBrake
The EmergencyBrake trait is the interface for the emergency brake.