gosh_dl/protocol/
events.rs

1//! Download events
2//!
3//! Events emitted by the download engine.
4
5use super::types::{DownloadId, DownloadProgress, DownloadState};
6use serde::{Deserialize, Serialize};
7
8/// Events emitted by the download engine
9#[derive(Debug, Clone, Serialize, Deserialize)]
10pub enum DownloadEvent {
11    /// Download was added
12    Added { id: DownloadId },
13    /// Download started
14    Started { id: DownloadId },
15    /// Progress update
16    Progress {
17        id: DownloadId,
18        progress: DownloadProgress,
19    },
20    /// State changed
21    StateChanged {
22        id: DownloadId,
23        old_state: DownloadState,
24        new_state: DownloadState,
25    },
26    /// Download completed successfully
27    Completed { id: DownloadId },
28    /// Download failed
29    Failed {
30        id: DownloadId,
31        error: String,
32        retryable: bool,
33    },
34    /// Download was removed
35    Removed { id: DownloadId },
36    /// Download was paused
37    Paused { id: DownloadId },
38    /// Download was resumed
39    Resumed { id: DownloadId },
40}