diff options
author | Alex Auvolat <alex@adnab.me> | 2021-04-05 20:33:24 +0200 |
---|---|---|
committer | Alex Auvolat <alex@adnab.me> | 2021-04-27 16:37:09 +0200 |
commit | 64b91c2645524956209892788ad7841e94461bd6 (patch) | |
tree | 1feb09f40f0c61201ea2a7c6570bef817c40f0ee /src/util/persister.rs | |
parent | e16077f40a714fddf7a9ba585a171d0c7b40d19a (diff) | |
download | garage-64b91c2645524956209892788ad7841e94461bd6.tar.gz garage-64b91c2645524956209892788ad7841e94461bd6.zip |
Keep old data
Diffstat (limited to 'src/util/persister.rs')
-rw-r--r-- | src/util/persister.rs | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/util/persister.rs b/src/util/persister.rs index f4e8cd72..93b7cdf4 100644 --- a/src/util/persister.rs +++ b/src/util/persister.rs @@ -1,7 +1,7 @@ use std::io::{Read, Write}; use std::path::PathBuf; -use tokio::io::AsyncWriteExt; +use tokio::io::{AsyncReadExt, AsyncWriteExt}; use serde::{Deserialize, Serialize}; @@ -51,6 +51,16 @@ where Ok(()) } + pub async fn load_async(&self) -> Result<T, Error> { + let mut file = tokio::fs::File::open(&self.path).await?; + + let mut bytes = vec![]; + file.read_to_end(&mut bytes).await?; + + let value = rmp_serde::decode::from_read_ref(&bytes[..])?; + Ok(value) + } + pub async fn save_async(&self, t: &T) -> Result<(), Error> { let bytes = rmp_to_vec_all_named(t)?; |