From 74751e82695b4b0dbed3466a2caf120a020b4229 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Fri, 16 Oct 2020 07:49:02 +0300 Subject: feat: obnam-restore restores generation to stdout --- src/chunk.rs | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) (limited to 'src/chunk.rs') diff --git a/src/chunk.rs b/src/chunk.rs index 17159e0..e1358ee 100644 --- a/src/chunk.rs +++ b/src/chunk.rs @@ -1,4 +1,6 @@ -use serde::Serialize; +use crate::chunkid::ChunkId; +use serde::{Deserialize, Serialize}; +use std::default::Default; /// Store an arbitrary chunk of data. /// @@ -6,7 +8,7 @@ use serde::Serialize; /// /// A chunk also contains its associated metadata, except its /// identifier. -#[derive(Debug, Serialize)] +#[derive(Debug, Serialize, Deserialize)] pub struct DataChunk { data: Vec, } @@ -22,3 +24,31 @@ impl DataChunk { &self.data } } + +#[derive(Default, Debug, Serialize, Deserialize)] +pub struct GenerationChunk { + chunk_ids: Vec, +} + +impl GenerationChunk { + pub fn new(chunk_ids: Vec) -> Self { + Self { chunk_ids } + } + + pub fn is_empty(&self) -> bool { + self.chunk_ids.is_empty() + } + + pub fn len(&self) -> usize { + self.chunk_ids.len() + } + + pub fn chunk_ids(&self) -> impl Iterator { + self.chunk_ids.iter() + } + + pub fn to_data_chunk(&self) -> anyhow::Result { + let json = serde_json::to_string(self)?; + Ok(DataChunk::new(json.as_bytes().to_vec())) + } +} -- cgit v1.2.1