event.rs (1545B)
1 use crate::channels::Channels; 2 use crate::invoice::Invoice; 3 use serde::Serialize; 4 use serde_json::Value; 5 6 pub enum ConnectionState { 7 Dead(String), 8 Connecting, 9 Active, 10 } 11 12 #[derive(Default)] 13 pub enum LoadingState<T, E> { 14 #[default] 15 Loading, 16 Failed(E), 17 Loaded(T), 18 } 19 20 impl<T, E> LoadingState<T, E> { 21 fn _as_ref(&self) -> LoadingState<&T, &E> { 22 match self { 23 Self::Loading => LoadingState::<&T, &E>::Loading, 24 Self::Failed(err) => LoadingState::<&T, &E>::Failed(err), 25 Self::Loaded(t) => LoadingState::<&T, &E>::Loaded(t), 26 } 27 } 28 29 pub fn from_result(res: Result<T, E>) -> LoadingState<T, E> { 30 match res { 31 Ok(r) => LoadingState::Loaded(r), 32 Err(err) => LoadingState::Failed(err), 33 } 34 } 35 36 /* 37 fn unwrap(self) -> T { 38 let Self::Loaded(t) = self else { 39 panic!("unwrap in LoadingState"); 40 }; 41 42 t 43 } 44 */ 45 } 46 47 #[derive(Serialize, Debug, Clone)] 48 pub struct _WaitRequest { 49 pub indexname: String, 50 pub subsystem: String, 51 pub nextvalue: u64, 52 } 53 54 #[derive(Clone, Debug)] 55 pub enum Request { 56 GetInfo, 57 ListPeerChannels, 58 PaidInvoices(u32), 59 } 60 61 /// Responses from the socket 62 pub enum ClnResponse { 63 GetInfo(Value), 64 ListPeerChannels(Result<Channels, lnsocket::Error>), 65 PaidInvoices(Result<Vec<Invoice>, lnsocket::Error>), 66 } 67 68 pub enum Event { 69 /// We lost the socket somehow 70 Ended { 71 reason: String, 72 }, 73 74 Connected, 75 76 Response(ClnResponse), 77 }