]> git.proxmox.com Git - proxmox-backup.git/blame - src/task.rs
do_verification_job: fix "never-reverify" and refactor/comment
[proxmox-backup.git] / src / task.rs
CommitLineData
d1993187
WB
1use anyhow::Error;
2
3/// `WorkerTask` methods commonly used from contexts otherwise not related to the API server.
4pub trait TaskState {
5 /// If the task should be aborted, this should fail with a reasonable error message.
6 fn check_abort(&self) -> Result<(), Error>;
7
8 /// Create a log message for this task.
9 fn log(&self, level: log::Level, message: &std::fmt::Arguments);
10}
11
12/// Convenience implementation:
13impl<T: TaskState + ?Sized> TaskState for std::sync::Arc<T> {
14 fn check_abort(&self) -> Result<(), Error> {
15 <T as TaskState>::check_abort(&*self)
16 }
17
18 fn log(&self, level: log::Level, message: &std::fmt::Arguments) {
19 <T as TaskState>::log(&*self, level, message)
20 }
21}
22
23#[macro_export]
24macro_rules! task_error {
25 ($task:expr, $($fmt:tt)+) => {{
26 $crate::task::TaskState::log(&*$task, log::Level::Error, &format_args!($($fmt)+))
27 }};
28}
29
30#[macro_export]
31macro_rules! task_warn {
32 ($task:expr, $($fmt:tt)+) => {{
33 $crate::task::TaskState::log(&*$task, log::Level::Warn, &format_args!($($fmt)+))
34 }};
35}
36
37#[macro_export]
38macro_rules! task_log {
39 ($task:expr, $($fmt:tt)+) => {{
40 $crate::task::TaskState::log(&*$task, log::Level::Info, &format_args!($($fmt)+))
41 }};
42}
43
44#[macro_export]
45macro_rules! task_debug {
46 ($task:expr, $($fmt:tt)+) => {{
47 $crate::task::TaskState::log(&*$task, log::Level::Debug, &format_args!($($fmt)+))
48 }};
49}
50
51#[macro_export]
52macro_rules! task_trace {
53 ($task:expr, $($fmt:tt)+) => {{
54 $crate::task::TaskState::log(&*$task, log::Level::Trace, &format_args!($($fmt)+))
55 }};
56}