@ -1,17 +1,18 @@
 | 
			
		||||
use anyhow::{Error};
 | 
			
		||||
use std::sync::Arc;
 | 
			
		||||
 | 
			
		||||
use super::datastore::*;
 | 
			
		||||
use super::crypt_config::*;
 | 
			
		||||
use super::data_blob::*;
 | 
			
		||||
use anyhow::Error;
 | 
			
		||||
 | 
			
		||||
use super::crypt_config::CryptConfig;
 | 
			
		||||
use super::data_blob::DataBlob;
 | 
			
		||||
use super::datastore::DataStore;
 | 
			
		||||
 | 
			
		||||
/// The ReadChunk trait allows reading backup data chunks (local or remote)
 | 
			
		||||
pub trait ReadChunk {
 | 
			
		||||
    /// Returns the encoded chunk data
 | 
			
		||||
    fn read_raw_chunk(&mut self, digest:&[u8; 32]) -> Result<DataBlob, Error>;
 | 
			
		||||
    fn read_raw_chunk(&mut self, digest: &[u8; 32]) -> Result<DataBlob, Error>;
 | 
			
		||||
 | 
			
		||||
    /// Returns the decoded chunk data
 | 
			
		||||
    fn read_chunk(&mut self, digest:&[u8; 32]) -> Result<Vec<u8>, Error>;
 | 
			
		||||
    fn read_chunk(&mut self, digest: &[u8; 32]) -> Result<Vec<u8>, Error>;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub struct LocalChunkReader {
 | 
			
		||||
@ -20,16 +21,16 @@ pub struct LocalChunkReader {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl LocalChunkReader {
 | 
			
		||||
 | 
			
		||||
    pub fn new(store: Arc<DataStore>, crypt_config: Option<Arc<CryptConfig>>) -> Self {
 | 
			
		||||
        Self { store, crypt_config }
 | 
			
		||||
        Self {
 | 
			
		||||
            store,
 | 
			
		||||
            crypt_config,
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl ReadChunk for LocalChunkReader {
 | 
			
		||||
 | 
			
		||||
    fn read_raw_chunk(&mut self, digest:&[u8; 32]) -> Result<DataBlob, Error> {
 | 
			
		||||
 | 
			
		||||
    fn read_raw_chunk(&mut self, digest: &[u8; 32]) -> Result<DataBlob, Error> {
 | 
			
		||||
        let digest_str = proxmox::tools::digest_to_hex(digest);
 | 
			
		||||
        println!("READ CHUNK {}", digest_str);
 | 
			
		||||
 | 
			
		||||
@ -41,10 +42,10 @@ impl ReadChunk for LocalChunkReader {
 | 
			
		||||
        Ok(chunk)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fn read_chunk(&mut self, digest:&[u8; 32]) -> Result<Vec<u8>, Error> {
 | 
			
		||||
    fn read_chunk(&mut self, digest: &[u8; 32]) -> Result<Vec<u8>, Error> {
 | 
			
		||||
        let chunk = self.read_raw_chunk(digest)?;
 | 
			
		||||
 | 
			
		||||
        let raw_data =  chunk.decode(self.crypt_config.as_ref().map(Arc::as_ref))?;
 | 
			
		||||
        let raw_data = chunk.decode(self.crypt_config.as_ref().map(Arc::as_ref))?;
 | 
			
		||||
 | 
			
		||||
        // fixme: verify digest?
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user