mirror of
https://git.proxmox.com/git/proxmox-backup-qemu
synced 2025-11-03 00:40:36 +00:00
gather/return some statistics
This commit is contained in:
parent
209346837e
commit
d325ffe484
22
src/lib.rs
22
src/lib.rs
@ -12,10 +12,15 @@ use chrono::{Utc, TimeZone};
|
||||
|
||||
|
||||
struct BackupTask {
|
||||
worker: JoinHandle<Result<(), Error>>,
|
||||
worker: JoinHandle<Result<BackupStats, Error>>,
|
||||
tx: Sender<BackupMessage>,
|
||||
// runtime: Runtime,
|
||||
// client: Arc<BackupClient>,
|
||||
// client: Arc<BackupClient>,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
struct BackupStats {
|
||||
written_bytes: u64,
|
||||
}
|
||||
|
||||
enum BackupMessage {
|
||||
@ -64,10 +69,12 @@ impl BackupTask {
|
||||
|
||||
}
|
||||
|
||||
fn backup_worker_task(rx: Receiver<BackupMessage>, host: &str) -> Result<(), Error> {
|
||||
fn backup_worker_task(rx: Receiver<BackupMessage>, host: &str) -> Result<BackupStats, Error> {
|
||||
|
||||
let mut runtime = Runtime::new().unwrap(); // fixme
|
||||
|
||||
let mut stats = BackupStats { written_bytes: 0 };
|
||||
|
||||
loop {
|
||||
let msg = rx.recv()?;
|
||||
|
||||
@ -77,7 +84,8 @@ fn backup_worker_task(rx: Receiver<BackupMessage>, host: &str) -> Result<(), Err
|
||||
break;
|
||||
}
|
||||
BackupMessage::WriteData { dev_id, data, size, callback, callback_data } => {
|
||||
println!("dev {}: write {} bytes", dev_id, size);
|
||||
stats.written_bytes += size;
|
||||
println!("dev {}: write {} bytes ({})", dev_id, size, stats.written_bytes);
|
||||
|
||||
runtime.block_on(async move {
|
||||
//println!("Delay test");
|
||||
@ -95,7 +103,7 @@ fn backup_worker_task(rx: Receiver<BackupMessage>, host: &str) -> Result<(), Err
|
||||
|
||||
// runtime.run()
|
||||
|
||||
Ok(())
|
||||
Ok(stats)
|
||||
}
|
||||
|
||||
// The C interface
|
||||
@ -153,8 +161,8 @@ pub unsafe extern "C" fn proxmox_backup_disconnect(handle: *mut ProxmoxBackupHan
|
||||
match task.worker.join() {
|
||||
Ok(result) => {
|
||||
match result {
|
||||
Ok(()) => {
|
||||
println!("worker finished");
|
||||
Ok(stats) => {
|
||||
println!("worker finished {:?}", stats);
|
||||
}
|
||||
Err(err) => {
|
||||
println!("worker finished with error: {:?}", err);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user