@@ -28,7 +28,7 @@ use core::task::{Poll, Waker};
28
28
pub const MAX_EVENT_QUEUE_SIZE : usize = 1000 ;
29
29
30
30
pub ( crate ) struct EventQueue {
31
- queue : Arc < Mutex < VecDeque < Event > > > ,
31
+ queue : Arc < Mutex < VecDeque < LiquidityEvent > > > ,
32
32
waker : Arc < Mutex < Option < Waker > > > ,
33
33
#[ cfg( feature = "std" ) ]
34
34
condvar : crate :: sync:: Condvar ,
@@ -47,11 +47,11 @@ impl EventQueue {
47
47
Self { queue, waker }
48
48
}
49
49
50
- pub fn enqueue ( & self , event : Event ) {
50
+ pub fn enqueue < E : Into < LiquidityEvent > > ( & self , event : E ) {
51
51
{
52
52
let mut queue = self . queue . lock ( ) . unwrap ( ) ;
53
53
if queue. len ( ) < MAX_EVENT_QUEUE_SIZE {
54
- queue. push_back ( event) ;
54
+ queue. push_back ( event. into ( ) ) ;
55
55
} else {
56
56
return ;
57
57
}
@@ -64,19 +64,21 @@ impl EventQueue {
64
64
self . condvar . notify_one ( ) ;
65
65
}
66
66
67
- pub fn next_event ( & self ) -> Option < Event > {
67
+ pub fn next_event ( & self ) -> Option < LiquidityEvent > {
68
68
self . queue . lock ( ) . unwrap ( ) . pop_front ( )
69
69
}
70
70
71
- pub async fn next_event_async ( & self ) -> Event {
71
+ pub async fn next_event_async ( & self ) -> LiquidityEvent {
72
72
EventFuture { event_queue : Arc :: clone ( & self . queue ) , waker : Arc :: clone ( & self . waker ) } . await
73
73
}
74
74
75
75
#[ cfg( feature = "std" ) ]
76
- pub fn wait_next_event ( & self ) -> Event {
76
+ pub fn wait_next_event ( & self ) -> LiquidityEvent {
77
77
let mut queue = self
78
78
. condvar
79
- . wait_while ( self . queue . lock ( ) . unwrap ( ) , |queue : & mut VecDeque < Event > | queue. is_empty ( ) )
79
+ . wait_while ( self . queue . lock ( ) . unwrap ( ) , |queue : & mut VecDeque < LiquidityEvent > | {
80
+ queue. is_empty ( )
81
+ } )
80
82
. unwrap ( ) ;
81
83
82
84
let event = queue. pop_front ( ) . expect ( "non-empty queue" ) ;
@@ -95,14 +97,14 @@ impl EventQueue {
95
97
event
96
98
}
97
99
98
- pub fn get_and_clear_pending_events ( & self ) -> Vec < Event > {
100
+ pub fn get_and_clear_pending_events ( & self ) -> Vec < LiquidityEvent > {
99
101
self . queue . lock ( ) . unwrap ( ) . split_off ( 0 ) . into ( )
100
102
}
101
103
}
102
104
103
105
/// An event which you should probably take some action in response to.
104
106
#[ derive( Debug , Clone , PartialEq , Eq ) ]
105
- pub enum Event {
107
+ pub enum LiquidityEvent {
106
108
/// An LSPS0 client event.
107
109
LSPS0Client ( lsps0:: event:: LSPS0ClientEvent ) ,
108
110
/// An LSPS1 (Channel Request) client event.
@@ -116,13 +118,44 @@ pub enum Event {
116
118
LSPS2Service ( lsps2:: event:: LSPS2ServiceEvent ) ,
117
119
}
118
120
121
+ impl From < lsps0:: event:: LSPS0ClientEvent > for LiquidityEvent {
122
+ fn from ( event : lsps0:: event:: LSPS0ClientEvent ) -> Self {
123
+ Self :: LSPS0Client ( event)
124
+ }
125
+ }
126
+
127
+ impl From < lsps1:: event:: LSPS1ClientEvent > for LiquidityEvent {
128
+ fn from ( event : lsps1:: event:: LSPS1ClientEvent ) -> Self {
129
+ Self :: LSPS1Client ( event)
130
+ }
131
+ }
132
+
133
+ #[ cfg( lsps1_service) ]
134
+ impl From < lsps1:: event:: LSPS1ServiceEvent > for LiquidityEvent {
135
+ fn from ( event : lsps1:: event:: LSPS1ServiceEvent ) -> Self {
136
+ Self :: LSPS1Service ( event)
137
+ }
138
+ }
139
+
140
+ impl From < lsps2:: event:: LSPS2ClientEvent > for LiquidityEvent {
141
+ fn from ( event : lsps2:: event:: LSPS2ClientEvent ) -> Self {
142
+ Self :: LSPS2Client ( event)
143
+ }
144
+ }
145
+
146
+ impl From < lsps2:: event:: LSPS2ServiceEvent > for LiquidityEvent {
147
+ fn from ( event : lsps2:: event:: LSPS2ServiceEvent ) -> Self {
148
+ Self :: LSPS2Service ( event)
149
+ }
150
+ }
151
+
119
152
struct EventFuture {
120
- event_queue : Arc < Mutex < VecDeque < Event > > > ,
153
+ event_queue : Arc < Mutex < VecDeque < LiquidityEvent > > > ,
121
154
waker : Arc < Mutex < Option < Waker > > > ,
122
155
}
123
156
124
157
impl Future for EventFuture {
125
- type Output = Event ;
158
+ type Output = LiquidityEvent ;
126
159
127
160
fn poll (
128
161
self : core:: pin:: Pin < & mut Self > , cx : & mut core:: task:: Context < ' _ > ,
@@ -154,7 +187,7 @@ mod tests {
154
187
let secp_ctx = Secp256k1 :: new ( ) ;
155
188
let counterparty_node_id =
156
189
PublicKey :: from_secret_key ( & secp_ctx, & SecretKey :: from_slice ( & [ 42 ; 32 ] ) . unwrap ( ) ) ;
157
- let expected_event = Event :: LSPS0Client ( LSPS0ClientEvent :: ListProtocolsResponse {
190
+ let expected_event = LiquidityEvent :: LSPS0Client ( LSPS0ClientEvent :: ListProtocolsResponse {
158
191
counterparty_node_id,
159
192
protocols : Vec :: new ( ) ,
160
193
} ) ;
0 commit comments