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