@@ -5,6 +5,7 @@ use lightning::util::logger::Level;
5
5
use std:: ops:: Deref ;
6
6
use std:: sync:: { Arc , Mutex } ;
7
7
8
+ use crate :: events:: { Event , EventResult } ;
8
9
use crate :: transport:: message_handler:: ProtocolMessageHandler ;
9
10
use crate :: transport:: msgs:: {
10
11
LSPS0Message , LSPS0Request , LSPS0Response , LSPSMessage , ListProtocolsRequest ,
@@ -32,41 +33,40 @@ where
32
33
Self { entropy_source, protocols, pending_messages }
33
34
}
34
35
35
- pub fn list_protocols ( & self , counterparty_node_id : PublicKey ) {
36
+ pub fn list_protocols ( & self , counterparty_node_id : PublicKey ) -> RequestId {
37
+ let request_id = utils:: generate_request_id ( & self . entropy_source ) ;
36
38
let msg = LSPS0Message :: Request (
37
- utils :: generate_request_id ( & self . entropy_source ) ,
39
+ request_id . clone ( ) ,
38
40
LSPS0Request :: ListProtocols ( ListProtocolsRequest { } ) ,
39
41
) ;
40
-
41
42
self . enqueue_message ( counterparty_node_id, msg) ;
43
+ request_id
42
44
}
43
45
44
46
fn enqueue_message ( & self , counterparty_node_id : PublicKey , message : LSPS0Message ) {
45
47
self . pending_messages . lock ( ) . unwrap ( ) . push ( ( counterparty_node_id, message. into ( ) ) ) ;
46
48
}
47
49
48
50
fn handle_request (
49
- & self , request_id : RequestId , request : LSPS0Request , counterparty_node_id : & PublicKey ,
50
- ) -> Result < ( ) , lightning:: ln:: msgs:: LightningError > {
51
+ & self , id : RequestId , request : LSPS0Request , counterparty_node_id : & PublicKey ,
52
+ ) -> Result < Option < Event > , lightning:: ln:: msgs:: LightningError > {
51
53
match request {
52
54
LSPS0Request :: ListProtocols ( _) => {
53
- let msg = LSPS0Message :: Response (
54
- request_id,
55
- LSPS0Response :: ListProtocols ( ListProtocolsResponse {
56
- protocols : self . protocols . clone ( ) ,
57
- } ) ,
58
- ) ;
55
+ let response = LSPS0Response :: ListProtocols ( ListProtocolsResponse {
56
+ protocols : self . protocols . clone ( ) ,
57
+ } ) ;
58
+ let msg = LSPS0Message :: Response ( id. clone ( ) , response. clone ( ) ) ;
59
59
self . enqueue_message ( * counterparty_node_id, msg) ;
60
- Ok ( ( ) )
60
+ Ok ( Some ( Event { id , result : EventResult :: LSPS0 ( response ) } ) )
61
61
}
62
62
}
63
63
}
64
64
65
65
fn handle_response (
66
66
& self , response : LSPS0Response , counterparty_node_id : & PublicKey ,
67
- ) -> Result < ( ) , LightningError > {
67
+ ) -> Result < Option < Event > , LightningError > {
68
68
match response {
69
- LSPS0Response :: ListProtocols ( ListProtocolsResponse { protocols } ) => Ok ( ( ) ) ,
69
+ LSPS0Response :: ListProtocols ( ListProtocolsResponse { protocols } ) => Ok ( None ) ,
70
70
LSPS0Response :: ListProtocolsError ( ResponseError { code, message, data, .. } ) => {
71
71
Err ( LightningError {
72
72
err : format ! (
89
89
90
90
fn handle_message (
91
91
& self , message : Self :: ProtocolMessage , counterparty_node_id : & PublicKey ,
92
- ) -> Result < ( ) , LightningError > {
92
+ ) -> Result < Option < Event > , LightningError > {
93
93
match message {
94
94
LSPS0Message :: Request ( request_id, request) => {
95
95
self . handle_request ( request_id, request, counterparty_node_id)
0 commit comments