Jelajahi Sumber

event_graph: write/read bytes to/from disk, no json

Dastan-glitch 2 tahun lalu
induk
melakukan
71fedd2245
1 mengubah file dengan 19 tambahan dan 21 penghapusan
  1. 19 21
      src/event_graph/model.rs

+ 19 - 21
src/event_graph/model.rs

@@ -16,7 +16,15 @@
  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
  */
 
-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::<String>()
-            .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::<u8>::new();
+        file.read_to_end(&mut loaded_tree_bytes)?;
+
         let dser_tree: HashMap<blake3::Hash, EventNode<T>> = 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(())
         })