Skip to main content

rusty_cat/
transfer_status.rs

1use crate::error::MeowError;
2
3/// High-level lifecycle state of a transfer task.
4#[derive(Clone, Debug, Default, PartialEq, Eq)]
5pub enum TransferStatus {
6    /// Initial placeholder state before scheduling.
7    #[default]
8    None,
9
10    /// Queued and waiting for execution.
11    Pending,
12
13    /// Currently uploading or downloading.
14    Transmission,
15
16    /// Temporarily paused by user operation.
17    Paused,
18
19    /// Finished successfully.
20    Complete,
21
22    /// Failed with an associated error.
23    Failed(MeowError),
24
25    /// Canceled by user or caller.
26    Canceled,
27}
28
29impl TransferStatus {
30    /// Maps status to an integer code for external integrations.
31    ///
32    /// Mapping:
33    /// - `Pending=0`
34    /// - `Transmission=1`
35    /// - `Paused=2`
36    /// - `Complete=3`
37    /// - `Failed=4`
38    /// - `Canceled=5`
39    /// - `None=-1`
40    ///
41    /// # Examples
42    ///
43    /// ```no_run
44    /// use rusty_cat::api::TransferStatus;
45    ///
46    /// assert_eq!(TransferStatus::Pending.as_i32(), 0);
47    /// assert_eq!(TransferStatus::Complete.as_i32(), 3);
48    /// ```
49    pub fn as_i32(&self) -> i32 {
50        match self {
51            TransferStatus::Pending => 0,
52            TransferStatus::Transmission => 1,
53            TransferStatus::Paused => 2,
54            TransferStatus::Complete => 3,
55            TransferStatus::Failed(_) => 4,
56            TransferStatus::Canceled => 5,
57            TransferStatus::None => -1,
58        }
59    }
60}