lt_rs/alerts/implementations/
state_changed.rs

1use crate::{
2    alerts::{StateChangedAlert, TorrentState},
3    ffi::alerts::state_changed::ffi::{
4        state_changed_alert_get_prev_state, state_changed_alert_get_state,
5    },
6    torrent_handle::TorrentHandle,
7};
8
9pub struct StateChangedValues {
10    torrent_handle: TorrentHandle,
11    state: TorrentState,
12    prev_state: TorrentState,
13}
14
15impl StateChangedValues {
16    pub fn torrent_handle(&self) -> &TorrentHandle {
17        &self.torrent_handle
18    }
19
20    pub fn state(&self) -> TorrentState {
21        self.state
22    }
23
24    pub fn prev_state(&self) -> TorrentState {
25        self.prev_state
26    }
27}
28
29impl StateChangedAlert {
30    #[inline(always)]
31    pub fn handle(&self) -> TorrentHandle {
32        self.as_torrent_alert().handle()
33    }
34
35    #[inline(always)]
36    pub fn torrent_name<'a>(&'a self) -> &'a str {
37        self.as_torrent_alert().torrent_name()
38    }
39
40    #[inline(always)]
41    pub fn message(&self) -> String {
42        self.as_torrent_alert().message()
43    }
44
45    #[inline(always)]
46    pub fn state(&self) -> TorrentState {
47        let state = unsafe { state_changed_alert_get_state(self.0) };
48        TorrentState::from_u8(state)
49    }
50
51    #[inline(always)]
52    pub fn prev_state(&self) -> TorrentState {
53        let prev_state = unsafe { state_changed_alert_get_prev_state(self.0) };
54        TorrentState::from_u8(prev_state)
55    }
56}