From e5064ba607a51d8311138f0d4db786afd9459ea6 Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Tue, 12 Feb 2019 14:13:31 +0100 Subject: [PATCH] simplify backup lib structure (pub use xxx:*), improve doc --- src/api2/admin/datastore.rs | 2 +- src/api2/admin/datastore/catar.rs | 3 +-- src/api2/config/datastore.rs | 2 +- src/backup.rs | 19 ++++++++++++++----- src/backup/chunk_store.rs | 1 + src/backup/chunker.rs | 19 ++++++++++--------- src/backup/datastore.rs | 8 ++++++++ src/backup/dynamic_index.rs | 3 ++- src/backup/fixed_index.rs | 2 ++ src/bin/test_chunk_speed.rs | 3 ++- 10 files changed, 42 insertions(+), 20 deletions(-) diff --git a/src/api2/admin/datastore.rs b/src/api2/admin/datastore.rs index 1966accd..6c7276d7 100644 --- a/src/api2/admin/datastore.rs +++ b/src/api2/admin/datastore.rs @@ -10,7 +10,7 @@ use serde_json::{json, Value}; use crate::config::datastore; -use crate::backup::datastore::*; +use crate::backup::*; mod catar; diff --git a/src/api2/admin/datastore/catar.rs b/src/api2/admin/datastore/catar.rs index 45c6f44a..5c073e0e 100644 --- a/src/api2/admin/datastore/catar.rs +++ b/src/api2/admin/datastore/catar.rs @@ -2,8 +2,7 @@ use failure::*; use crate::tools; use crate::tools::wrapped_reader_stream::*; -use crate::backup::datastore::*; -use crate::backup::dynamic_index::*; +use crate::backup::*; //use crate::server::rest::*; use crate::api::schema::*; use crate::api::router::*; diff --git a/src/api2/config/datastore.rs b/src/api2/config/datastore.rs index c12ca5fc..cbde50be 100644 --- a/src/api2/config/datastore.rs +++ b/src/api2/config/datastore.rs @@ -3,7 +3,7 @@ use failure::*; use crate::api::schema::*; use crate::api::router::*; -use crate::backup::chunk_store::*; +use crate::backup::*; use serde_json::{json, Value}; use std::path::PathBuf; diff --git a/src/backup.rs b/src/backup.rs index 5a4a4981..43830941 100644 --- a/src/backup.rs +++ b/src/backup.rs @@ -11,8 +11,17 @@ //! whereas the `FixedIndex*` format is an optimization to store a //! list of equal sized chunks. -pub mod chunker; -pub mod chunk_store; -pub mod fixed_index; -pub mod dynamic_index; -pub mod datastore; +mod chunker; +pub use chunker::*; + +mod chunk_store; +pub use chunk_store::*; + +mod fixed_index; +pub use fixed_index::*; + +mod dynamic_index; +pub use dynamic_index::*; + +mod datastore; +pub use datastore::*; diff --git a/src/backup/chunk_store.rs b/src/backup/chunk_store.rs index 63cd01c7..34d06e40 100644 --- a/src/backup/chunk_store.rs +++ b/src/backup/chunk_store.rs @@ -30,6 +30,7 @@ impl Default for GarbageCollectionStatus { } } +/// File system based chunk store pub struct ChunkStore { name: String, // used for error reporting pub (crate) base: PathBuf, diff --git a/src/backup/chunker.rs b/src/backup/chunker.rs index 1d03786d..b77cf4c9 100644 --- a/src/backup/chunker.rs +++ b/src/backup/chunker.rs @@ -1,15 +1,16 @@ -//! Slinding window chunker (Buzhash) -//! -//! This is a rewrite of *casync* chunker (cachunker.h) in rust. -//! -//! Hashing by cyclic polynomial (also called Buzhash) has the benefit -//! of avoiding multiplications, using barrel shifts instead. For more -//! information please take a look at the [Rolling -//! Hash](https://en.wikipedia.org/wiki/Rolling_hash) artikel from -//! wikipedia. const CA_CHUNKER_WINDOW_SIZE: usize = 48; +/// Slinding window chunker (Buzhash) +/// +/// This is a rewrite of *casync* chunker (cachunker.h) in rust. +/// +/// Hashing by cyclic polynomial (also called Buzhash) has the benefit +/// of avoiding multiplications, using barrel shifts instead. For more +/// information please take a look at the [Rolling +/// Hash](https://en.wikipedia.org/wiki/Rolling_hash) artikel from +/// wikipedia. + pub struct Chunker { h: u32, window_size: usize, diff --git a/src/backup/datastore.rs b/src/backup/datastore.rs index 027aa9ce..55ceed1d 100644 --- a/src/backup/datastore.rs +++ b/src/backup/datastore.rs @@ -15,15 +15,23 @@ use super::dynamic_index::*; use chrono::{Utc, TimeZone}; +/// Datastore Management +/// +/// A Datastore can store severals backups, and provides the +/// management interface for backup. pub struct DataStore { chunk_store: Arc, gc_mutex: Mutex, } +/// Detailed Backup Information #[derive(Debug)] pub struct BackupInfo { + /// Type of backup pub backup_type: String, + /// Unique (for this type) ID pub backup_id: String, + /// Backup timestamp pub backup_time: DateTime, } diff --git a/src/backup/dynamic_index.rs b/src/backup/dynamic_index.rs index aec318e3..f5c2ddd4 100644 --- a/src/backup/dynamic_index.rs +++ b/src/backup/dynamic_index.rs @@ -12,9 +12,10 @@ use std::os::unix::io::AsRawFd; use uuid::Uuid; //use chrono::{Local, TimeZone}; +/// Header format definition for dynamic index files (`.dixd`) #[repr(C)] -//pub struct DynamicIndexHeader { pub struct DynamicIndexHeader { + /// The string `PROXMOX-DIDX` pub magic: [u8; 12], pub version: u32, pub uuid: [u8; 16], diff --git a/src/backup/fixed_index.rs b/src/backup/fixed_index.rs index 9beefea0..29617757 100644 --- a/src/backup/fixed_index.rs +++ b/src/backup/fixed_index.rs @@ -10,8 +10,10 @@ use std::os::unix::io::AsRawFd; use uuid::Uuid; use chrono::{Local, TimeZone}; +/// Header format definition for fixed index files (`.fixd`) #[repr(C)] pub struct FixedIndexHeader { + /// The string `PROXMOX-FIDX` pub magic: [u8; 12], pub version: u32, pub uuid: [u8; 16], diff --git a/src/bin/test_chunk_speed.rs b/src/bin/test_chunk_speed.rs index 7000a498..1b787469 100644 --- a/src/bin/test_chunk_speed.rs +++ b/src/bin/test_chunk_speed.rs @@ -1,6 +1,7 @@ extern crate proxmox_backup; -use proxmox_backup::backup::chunker::*; +//use proxmox_backup::backup::chunker::*; +use proxmox_backup::backup::*; fn main() {