1
0
Fork 0
mirror of https://github.com/dani-garcia/vaultwarden.git synced 2025-09-25 11:01:18 +00:00

Implement better retry and use it while saving device

This commit is contained in:
Daniel García 2018-12-12 22:15:54 +01:00
commit 4e827e4f8a
No known key found for this signature in database
GPG key ID: FC8A7D14C3CD543A
3 changed files with 45 additions and 30 deletions

View file

@ -252,6 +252,33 @@ fn upcase_value(value: &Value) -> Value {
fn _process_key(key: &str) -> String {
match key.to_lowercase().as_ref() {
"ssn" => "SSN".into(),
_ => self::upcase_first(key)
_ => self::upcase_first(key),
}
}
//
// Retry methods
//
pub fn retry<F, T, E>(func: F, max_tries: i32) -> Result<T, E>
where
F: Fn() -> Result<T, E>,
{
use std::{thread::sleep, time::Duration};
let mut tries = 0;
loop {
match func() {
ok @ Ok(_) => return ok,
err @ Err(_) => {
tries += 1;
if tries >= max_tries {
return err;
}
sleep(Duration::from_millis(500));
}
}
}
}