From 988654bf6512d16aa10f57c4a34568941f544c8f Mon Sep 17 00:00:00 2001 From: Benno Zeeman Date: Mon, 6 Jan 2025 12:34:39 +0100 Subject: [PATCH] refactor(autonomi): use deterministic serialization Use BTreeMap instead of HashMap so serde serializes deterministically. --- autonomi/src/client/files/archive.rs | 10 ++++------ autonomi/src/client/files/archive_public.rs | 8 ++++---- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/autonomi/src/client/files/archive.rs b/autonomi/src/client/files/archive.rs index 5ec00bfa13..18ecd1c735 100644 --- a/autonomi/src/client/files/archive.rs +++ b/autonomi/src/client/files/archive.rs @@ -7,7 +7,7 @@ // permissions and limitations relating to use of the SAFE Network Software. use std::{ - collections::HashMap, + collections::BTreeMap, path::{Path, PathBuf}, }; @@ -36,8 +36,6 @@ pub enum RenameError { /// Metadata for a file in an archive. Time values are UNIX timestamps. #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] pub struct Metadata { - /// When the file was (last) uploaded to the network. - pub uploaded: u64, /// File creation time on local file system. See [`std::fs::Metadata::created`] for details per OS. pub created: u64, /// Last file modification time taken from local file system. See [`std::fs::Metadata::modified`] for details per OS. @@ -67,7 +65,7 @@ impl Metadata { /// The data maps are stored within this structure instead of uploading them to the network, keeping the data private. #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)] pub struct PrivateArchive { - map: HashMap, + map: BTreeMap, } impl PrivateArchive { @@ -75,7 +73,7 @@ impl PrivateArchive { /// Note that this does not upload the archive to the network pub fn new() -> Self { Self { - map: HashMap::new(), + map: BTreeMap::new(), } } @@ -129,7 +127,7 @@ impl PrivateArchive { } /// Get the underlying map - pub fn map(&self) -> &HashMap { + pub fn map(&self) -> &BTreeMap { &self.map } diff --git a/autonomi/src/client/files/archive_public.rs b/autonomi/src/client/files/archive_public.rs index 19f1756b8b..dd7cb046e2 100644 --- a/autonomi/src/client/files/archive_public.rs +++ b/autonomi/src/client/files/archive_public.rs @@ -7,7 +7,7 @@ // permissions and limitations relating to use of the SAFE Network Software. use std::{ - collections::HashMap, + collections::BTreeMap, path::{Path, PathBuf}, }; @@ -34,7 +34,7 @@ pub type ArchiveAddr = XorName; /// to the network, of which the addresses are stored in this archive. #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)] pub struct PublicArchive { - map: HashMap, + map: BTreeMap, } impl PublicArchive { @@ -42,7 +42,7 @@ impl PublicArchive { /// Note that this does not upload the archive to the network pub fn new() -> Self { Self { - map: HashMap::new(), + map: BTreeMap::new(), } } @@ -92,7 +92,7 @@ impl PublicArchive { } /// Get the underlying map - pub fn map(&self) -> &HashMap { + pub fn map(&self) -> &BTreeMap { &self.map }