diff --git a/src/event_graph/model.rs b/src/event_graph/model.rs
index a2feff188..1f0daedbd 100644
--- a/src/event_graph/model.rs
+++ b/src/event_graph/model.rs
@@ -16,7 +16,15 @@
* along with this program. If not, see .
*/
-use std::{cmp::Ordering, collections::HashMap, fmt::Debug, path::Path, sync::Arc};
+use std::{
+ cmp::Ordering,
+ collections::HashMap,
+ fmt::Debug,
+ fs::File,
+ io::{Read, Write},
+ path::Path,
+ sync::Arc,
+};
#[cfg(feature = "async-serial")]
use darkfi_serial::async_trait;
@@ -25,17 +33,8 @@ use darkfi_serial::{
};
use log::{debug, error, info};
use smol::lock::Mutex;
-use tinyjson::JsonValue;
-use crate::{
- event_graph::events_queue::EventsQueuePtr,
- util::{
- encoding::base64,
- file::{load_json_file, save_json_file},
- time::Timestamp,
- },
- Error, Result,
-};
+use crate::{event_graph::events_queue::EventsQueuePtr, util::time::Timestamp, Error, Result};
use super::EventMsg;
@@ -107,9 +106,9 @@ where
debug!(target: "event_graph", "Model::save_tree()");
let path = path.join("tree");
let tree = self.event_map.clone();
- let ser_tree = base64::encode(&serialize(&tree));
- save_json_file(&path, &JsonValue::String(ser_tree), false)?;
+ let mut file = File::create(path)?;
+ file.write_all(&serialize(&tree))?;
info!("Tree is saved to disk");
@@ -124,12 +123,11 @@ where
return Ok(())
}
- let loaded_tree_obj = load_json_file(&path)?;
- let loaded_tree_obj: &String = loaded_tree_obj
- .get::()
- .ok_or(Error::Custom("Failed to load tree object from JsonValue".to_string()))?;
- let loaded_tree_bytes = base64::decode(loaded_tree_obj.as_str())
- .ok_or(Error::Custom("Failed to decode loaded tree".to_string()))?;
+ let mut file = File::open(path)?;
+ // read the same file back into a Vec of bytes
+ let mut loaded_tree_bytes = Vec::::new();
+ file.read_to_end(&mut loaded_tree_bytes)?;
+
let dser_tree: HashMap> = deserialize(&loaded_tree_bytes)?;
self.event_map = dser_tree;
@@ -774,7 +772,7 @@ mod tests {
assert!(res);
- remove_dir_all(path).ok();
+ remove_dir_all(path)?;
Ok(())
})