notedeck

One damus client to rule them all
git clone git://jb55.com/notedeck
Log | Files | Refs | README | LICENSE

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 }