chunk_store.insert_chunk: return information about existing chunks
This commit is contained in:
parent
12bb93b3ad
commit
391a2e43ff
|
@ -151,7 +151,7 @@ impl ChunkStore {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn insert_chunk(&mut self, chunk: &[u8]) -> Result<([u8; 32]), Error> {
|
pub fn insert_chunk(&mut self, chunk: &[u8]) -> Result<(bool, [u8; 32]), Error> {
|
||||||
|
|
||||||
self.hasher.reset();
|
self.hasher.reset();
|
||||||
self.hasher.input(chunk);
|
self.hasher.input(chunk);
|
||||||
|
@ -170,7 +170,7 @@ impl ChunkStore {
|
||||||
|
|
||||||
if let Ok(metadata) = std::fs::metadata(&chunk_path) {
|
if let Ok(metadata) = std::fs::metadata(&chunk_path) {
|
||||||
if metadata.is_file() {
|
if metadata.is_file() {
|
||||||
return Ok(digest);
|
return Ok((true, digest));
|
||||||
} else {
|
} else {
|
||||||
bail!("Got unexpected file type for chunk {}", digest_str);
|
bail!("Got unexpected file type for chunk {}", digest_str);
|
||||||
}
|
}
|
||||||
|
@ -195,7 +195,7 @@ impl ChunkStore {
|
||||||
|
|
||||||
drop(lock);
|
drop(lock);
|
||||||
|
|
||||||
Ok(digest)
|
Ok((false, digest))
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -210,8 +210,11 @@ fn test_chunk_store1() {
|
||||||
assert!(chunk_store.is_err());
|
assert!(chunk_store.is_err());
|
||||||
|
|
||||||
let mut chunk_store = ChunkStore::create(".testdir").unwrap();
|
let mut chunk_store = ChunkStore::create(".testdir").unwrap();
|
||||||
chunk_store.insert_chunk(&[0u8, 1u8]).unwrap();
|
let (exists, _) = chunk_store.insert_chunk(&[0u8, 1u8]).unwrap();
|
||||||
chunk_store.insert_chunk(&[0u8, 1u8]).unwrap();
|
assert!(!exists);
|
||||||
|
|
||||||
|
let (exists, _) = chunk_store.insert_chunk(&[0u8, 1u8]).unwrap();
|
||||||
|
assert!(exists);
|
||||||
|
|
||||||
|
|
||||||
let chunk_store = ChunkStore::create(".testdir");
|
let chunk_store = ChunkStore::create(".testdir");
|
||||||
|
|
Loading…
Reference in New Issue