rustic_scheduler 0.2.1

rustic scheduler - a client/server application to schedule regular backups on many clients to one identical repository controlled by a central scheduling server.
Documentation
use crate::{config::AllRepositoryOptions, scheduler::ClientStats};
use anyhow::Result;
use rustic_core::{repofile::SnapshotFile, BackupOptions, SnapshotOptions};
use serde::{Deserialize, Serialize};
use tokio::sync::{mpsc, oneshot};

#[derive(Debug, Serialize, Deserialize)]
pub struct HandshakeMessage {
    pub client: String,
}

#[derive(Debug, Serialize, Deserialize)]
#[serde(tag = "result")]
pub enum HandshakeResultMessage {
    Ok,
    Error { message: String },
}

#[derive(Debug, Serialize, Deserialize)]
pub struct BackupMessage {
    pub repo_opts: AllRepositoryOptions,
    pub backup_opts: BackupOptions,
    pub snapshot_opts: SnapshotOptions,
    pub source: String,
}

#[derive(Debug, Serialize, Deserialize)]
#[serde(tag = "result")]
pub enum BackupResultMessage {
    Ok { snapshot: Box<SnapshotFile> },
    Error { message: String },
}

pub(crate) enum ClientMessage {
    Backup { client: String, msg: BackupMessage },
}

pub(crate) enum NotifyMessage {
    Connect {
        client: String,
        channel: mpsc::Sender<ClientMessage>,
    },
    Disconnect {
        client: String,
    },
    BackupResult {
        client: String,
        msg: BackupResultMessage,
    },
    StatsRequest {
        client: String,
        channel: oneshot::Sender<Result<ClientStats>>,
    },
}