summaryrefslogtreecommitdiffstats
path: root/src/swarm/bootstrap.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/swarm/bootstrap.rs')
-rw-r--r--src/swarm/bootstrap.rs22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/swarm/bootstrap.rs b/src/swarm/bootstrap.rs
index 125321b..b725786 100644
--- a/src/swarm/bootstrap.rs
+++ b/src/swarm/bootstrap.rs
@@ -140,9 +140,18 @@ fn read_swarm_id(doc: &AutoCommit) -> Option<String> {
}
}
-/// A backup to recover from (`--recover-from`, as `GET /admin/document` saves it): the
-/// document under a fresh actor, the epoch it is on and the swarm it names.
-pub(crate) fn load_backup(path: &Path) -> Result<(AutoCommit, Epoch, String)> {
+/// A backup to recover from (`--recover-from`).
+pub(crate) struct Backup {
+ /// Under a fresh actor.
+ pub(crate) doc: AutoCommit,
+ pub(crate) epoch: Epoch,
+ pub(crate) swarm_id: String,
+ /// The file's size (`swarm::stats`, disk).
+ pub(crate) bytes: u64,
+}
+
+/// Loads a backup to recover from, as `GET /admin/document` saves it.
+pub(crate) fn load_backup(path: &Path) -> Result<Backup> {
let bytes =
std::fs::read(path).with_context(|| format!("Reading the backup {}", path.display()))?;
let mut doc = AutoCommit::load(&bytes)
@@ -156,7 +165,12 @@ pub(crate) fn load_backup(path: &Path) -> Result<(AutoCommit, Epoch, String)> {
};
let epoch = snapshot::epoch_of(&mut doc)
.map_err(|reason| anyhow::anyhow!("The backup {}: {reason}", path.display()))?;
- Ok((doc, epoch, swarm_id))
+ Ok(Backup {
+ doc,
+ epoch,
+ swarm_id,
+ bytes: bytes.len() as u64,
+ })
}
/// Resolves the seeds in `unresolved`, says HELLO to each that resolves, and keeps the