lt_rs/alerts/implementations/
state_changed.rs1use 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}