diff options
author | Lars Wirzenius <liw@liw.fi> | 2021-05-24 08:55:14 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2021-05-29 11:41:15 +0300 |
commit | 6de230c382a4329df00bc11cc1ffb90390b13159 (patch) | |
tree | d4f0668be0d5cd07ea32af2b0978696658532122 /src/client.rs | |
parent | 566dd94d2e46c489b50d84a1fd24683460e5cfdc (diff) | |
download | obnam2-6de230c382a4329df00bc11cc1ffb90390b13159.tar.gz |
refactor: make metadata be part of datachunk
This makes it harder to lose the metadata for a chunk, or to use
unrelated metadata and chunk. Also, soon I will refactor things for
encrypting chunks, which will need metadata embedded in the encrypted
chunk.
Sponsored-by: author
Diffstat (limited to 'src/client.rs')
-rw-r--r-- | src/client.rs | 30 |
1 files changed, 12 insertions, 18 deletions
diff --git a/src/client.rs b/src/client.rs index 114574c..00f5bd7 100644 --- a/src/client.rs +++ b/src/client.rs @@ -107,10 +107,9 @@ impl BackupClient { info!("upload SQLite {}", filename.display()); let ids = self.read_file(filename, size)?; let gen = GenerationChunk::new(ids); - let data = gen.to_data_chunk()?; - let meta = ChunkMeta::new_generation(&sha256(data.data()), ¤t_timestamp()); - let gen_id = self.upload_gen_chunk(meta.clone(), gen)?; - info!("uploaded generation {}, meta {:?}", gen_id, meta); + let data = gen.to_data_chunk(¤t_timestamp())?; + let gen_id = self.upload_chunk(data)?; + info!("uploaded generation {}", gen_id); Ok(gen_id) } @@ -127,24 +126,19 @@ impl BackupClient { self.chunk_client.has_chunk(meta) } - pub fn upload_chunk(&self, meta: ChunkMeta, chunk: DataChunk) -> ClientResult<ChunkId> { - self.chunk_client.upload_chunk(meta, chunk) - } - - pub fn upload_gen_chunk(&self, meta: ChunkMeta, gen: GenerationChunk) -> ClientResult<ChunkId> { - let data = gen.to_data_chunk()?; - self.upload_chunk(meta, data) + pub fn upload_chunk(&self, chunk: DataChunk) -> ClientResult<ChunkId> { + self.chunk_client.upload_chunk(chunk) } pub fn upload_new_file_chunks(&self, chunker: Chunker) -> ClientResult<Vec<ChunkId>> { let mut chunk_ids = vec![]; for item in chunker { - let (meta, chunk) = item?; - if let Some(chunk_id) = self.has_chunk(&meta)? { + let chunk = item?; + if let Some(chunk_id) = self.has_chunk(chunk.meta())? { chunk_ids.push(chunk_id.clone()); info!("reusing existing chunk {}", chunk_id); } else { - let chunk_id = self.upload_chunk(meta, chunk)?; + let chunk_id = self.upload_chunk(chunk)?; chunk_ids.push(chunk_id.clone()); info!("created new chunk {}", chunk_id); } @@ -246,11 +240,11 @@ impl ChunkClient { Ok(has) } - pub fn upload_chunk(&self, meta: ChunkMeta, chunk: DataChunk) -> ClientResult<ChunkId> { + pub fn upload_chunk(&self, chunk: DataChunk) -> ClientResult<ChunkId> { let res = self .client .post(&self.chunks_url()) - .header("chunk-meta", meta.to_json()) + .header("chunk-meta", chunk.meta().to_json()) .body(chunk.data().to_vec()) .send() .map_err(ClientError::ReqwestError)?; @@ -262,7 +256,7 @@ impl ChunkClient { } else { return Err(ClientError::NoCreatedChunkId); }; - info!("uploaded_chunk {} meta {:?}", chunk_id, meta); + info!("uploaded_chunk {}", chunk_id); Ok(chunk_id) } @@ -335,7 +329,7 @@ impl ChunkClient { return Err(err); } - let chunk: DataChunk = DataChunk::new(body); + let chunk: DataChunk = DataChunk::new(body, meta); Ok(chunk) } |