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}