lt_rs/alerts/implementations/
peer_disconnected.rs

1use crate::alerts::PeerDisconnectedAlert;
2use crate::alerts::operation::Operation;
3use crate::alerts::peer_alert::{Endpoint, PeerId};
4use crate::alerts::types::{CloseReason, SocketType};
5use crate::errors::LtrsError;
6use crate::ffi::alerts::peer_disconnected::ffi::{
7    peer_disconnected_alert_get_error, peer_disconnected_alert_get_op,
8    peer_disconnected_alert_get_reason, peer_disconnected_alert_get_socket_type,
9};
10use crate::torrent_handle::TorrentHandle;
11
12impl PeerDisconnectedAlert {
13    #[inline(always)]
14    pub fn handle(&self) -> TorrentHandle {
15        self.as_torrent_alert().handle()
16    }
17
18    #[inline(always)]
19    pub fn torrent_name<'a>(&'a self) -> &'a str {
20        self.as_torrent_alert().torrent_name()
21    }
22
23    #[inline(always)]
24    pub fn message(&self) -> String {
25        self.as_torrent_alert().message()
26    }
27
28    #[inline(always)]
29    pub fn pid(&self) -> PeerId {
30        self.as_peer_alert().peer_id()
31    }
32
33    #[inline(always)]
34    pub fn endpoint(&self) -> Endpoint {
35        self.as_peer_alert().endpoint()
36    }
37
38    #[inline(always)]
39    pub fn socket_type(&self) -> SocketType {
40        SocketType::from_u8(unsafe { peer_disconnected_alert_get_socket_type(self.0) })
41    }
42
43    #[inline(always)]
44    pub fn op(&self) -> Operation {
45        unsafe { peer_disconnected_alert_get_op(self.0) }.into()
46    }
47
48    #[inline(always)]
49    pub fn error(&self) -> LtrsError {
50        unsafe { peer_disconnected_alert_get_error(self.0) }.into()
51    }
52
53    #[inline(always)]
54    pub fn reason(&self) -> CloseReason {
55        CloseReason::from_u16(unsafe { peer_disconnected_alert_get_reason(self.0) })
56    }
57}