Rename ValidatorExit and move to sdk (#17728)

This commit is contained in:
Tyera Eulberg
2021-06-03 21:06:13 -06:00
committed by GitHub
parent 3dcc8e0046
commit 3a647c4bea
11 changed files with 62 additions and 55 deletions

30
sdk/src/exit.rs Normal file
View File

@ -0,0 +1,30 @@
use std::fmt;
#[derive(Default)]
pub struct Exit {
exited: bool,
exits: Vec<Box<dyn FnOnce() + Send + Sync>>,
}
impl Exit {
pub fn register_exit(&mut self, exit: Box<dyn FnOnce() + Send + Sync>) {
if self.exited {
exit();
} else {
self.exits.push(exit);
}
}
pub fn exit(&mut self) {
self.exited = true;
for exit in self.exits.drain(..) {
exit();
}
}
}
impl fmt::Debug for Exit {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{} exits", self.exits.len())
}
}