rusty-cat 0.2.2

Async HTTP client for resumable file upload and download.
Documentation
use crate::file_transfer_record::FileTransferRecord;
use crate::ids::TaskId;
use std::sync::Arc;

pub(crate) type ProgressCb = Arc<dyn Fn(FileTransferRecord) + Send + Sync + 'static>;
pub(crate) type CompleteCb = Arc<dyn Fn(TaskId, Option<String>) + Send + Sync + 'static>;

pub(crate) struct TaskCallbacks {
    progress_cb: Option<ProgressCb>,
    complete_cb: Option<CompleteCb>,
}

impl TaskCallbacks {
    pub(crate) fn new(progress_cb: Option<ProgressCb>, complete_cb: Option<CompleteCb>) -> Self {
        Self {
            progress_cb,
            complete_cb,
        }
    }

    pub(crate) fn empty() -> Self {
        Self {
            progress_cb: None,
            complete_cb: None,
        }
    }

    pub fn progress_cb(&self) -> &Option<ProgressCb> {
        &self.progress_cb
    }

    pub fn complete_cb(&self) -> &Option<CompleteCb> {
        &self.complete_cb
    }
}