Skip to content

Commit

Permalink
refactor(autonomi): use deterministic serialization
Browse files Browse the repository at this point in the history
Use BTreeMap instead of HashMap so serde serializes deterministically.
  • Loading branch information
b-zee committed Jan 6, 2025
1 parent c565e32 commit f13415e
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 10 deletions.
10 changes: 4 additions & 6 deletions autonomi/src/client/files/archive.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
// permissions and limitations relating to use of the SAFE Network Software.

use std::{
collections::HashMap,
collections::BTreeMap,
path::{Path, PathBuf},
};

Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -67,15 +65,15 @@ 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<PathBuf, (DataMapChunk, Metadata)>,
map: BTreeMap<PathBuf, (DataMapChunk, Metadata)>,
}

impl PrivateArchive {
/// Create a new emtpy local archive
/// Note that this does not upload the archive to the network
pub fn new() -> Self {
Self {
map: HashMap::new(),
map: BTreeMap::new(),
}
}

Expand Down Expand Up @@ -129,7 +127,7 @@ impl PrivateArchive {
}

/// Get the underlying map
pub fn map(&self) -> &HashMap<PathBuf, (DataMapChunk, Metadata)> {
pub fn map(&self) -> &BTreeMap<PathBuf, (DataMapChunk, Metadata)> {
&self.map
}

Expand Down
8 changes: 4 additions & 4 deletions autonomi/src/client/files/archive_public.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
// permissions and limitations relating to use of the SAFE Network Software.

use std::{
collections::HashMap,
collections::BTreeMap,
path::{Path, PathBuf},
};

Expand All @@ -34,15 +34,15 @@ 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<PathBuf, (DataAddr, Metadata)>,
map: BTreeMap<PathBuf, (DataAddr, Metadata)>,
}

impl PublicArchive {
/// Create a new emtpy local archive
/// Note that this does not upload the archive to the network
pub fn new() -> Self {
Self {
map: HashMap::new(),
map: BTreeMap::new(),
}
}

Expand Down Expand Up @@ -92,7 +92,7 @@ impl PublicArchive {
}

/// Get the underlying map
pub fn map(&self) -> &HashMap<PathBuf, (DataAddr, Metadata)> {
pub fn map(&self) -> &BTreeMap<PathBuf, (DataAddr, Metadata)> {
&self.map
}

Expand Down

0 comments on commit f13415e

Please sign in to comment.