Skip to content
This repository was archived by the owner on Jan 6, 2025. It is now read-only.

Commit 3b21d50

Browse files
take and hold a reference to ChannelManager
1 parent b31f1c0 commit 3b21d50

File tree

2 files changed

+60
-11
lines changed

2 files changed

+60
-11
lines changed

src/events.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ impl EventQueue {
3636
let mut queue =
3737
self.condvar.wait_while(self.queue.lock().unwrap(), |queue| queue.is_empty()).unwrap();
3838

39-
let event = queue.pop_front().expect("non empty queue");
39+
let event = queue.pop_front().expect("non-empty queue");
4040
let should_notify = !queue.is_empty();
4141

4242
drop(queue);

src/transport/message_handler.rs

Lines changed: 59 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,16 @@ use crate::transport::msgs::{LSPSMessage, RawLSPSMessage, LSPS_MESSAGE_TYPE};
33
use crate::transport::protocol::LSPS0MessageHandler;
44

55
use bitcoin::secp256k1::PublicKey;
6+
use lightning::chain;
7+
use lightning::chain::chaininterface::{BroadcasterInterface, FeeEstimator};
8+
use lightning::ln::channelmanager::ChannelManager;
69
use lightning::ln::features::{InitFeatures, NodeFeatures};
710
use lightning::ln::msgs::{ErrorAction, LightningError};
811
use lightning::ln::peer_handler::CustomMessageHandler;
912
use lightning::ln::wire::CustomMessageReader;
10-
use lightning::sign::EntropySource;
11-
use lightning::util::logger::Level;
13+
use lightning::routing::router::Router;
14+
use lightning::sign::{EntropySource, NodeSigner, SignerProvider};
15+
use lightning::util::logger::{Level, Logger};
1216
use lightning::util::ser::Readable;
1317
use std::collections::HashMap;
1418
use std::convert::TryFrom;
@@ -41,25 +45,53 @@ pub struct LiquidityProviderConfig;
4145
///
4246
/// Should be used as a [`CustomMessageHandler`] for your
4347
/// [`lightning::ln::peer_handler::PeerManager`]'s [`lightning::ln::peer_handler::MessageHandler`].
44-
pub struct LiquidityManager<ES: Deref>
45-
where
48+
pub struct LiquidityManager<
49+
ES: Deref,
50+
M: Deref,
51+
T: Deref,
52+
F: Deref,
53+
R: Deref,
54+
SP: Deref,
55+
L: Deref,
56+
NS: Deref,
57+
> where
4658
ES::Target: EntropySource,
59+
M::Target: chain::Watch<<SP::Target as SignerProvider>::Signer>,
60+
T::Target: BroadcasterInterface,
61+
F::Target: FeeEstimator,
62+
R::Target: Router,
63+
SP::Target: SignerProvider,
64+
L::Target: Logger,
65+
NS::Target: NodeSigner,
4766
{
4867
pending_messages: Arc<Mutex<Vec<(PublicKey, LSPSMessage)>>>,
4968
pending_events: Arc<EventQueue>,
5069
request_id_to_method_map: Mutex<HashMap<String, String>>,
5170
lsps0_message_handler: LSPS0MessageHandler<ES>,
5271
provider_config: Option<LiquidityProviderConfig>,
72+
channel_manager: Arc<ChannelManager<M, T, ES, NS, SP, F, R, L>>,
5373
}
5474

55-
impl<ES: Deref> LiquidityManager<ES>
75+
impl<ES: Deref, M: Deref, T: Deref, F: Deref, R: Deref, SP: Deref, L: Deref, NS: Deref>
76+
LiquidityManager<ES, M, T, F, R, SP, L, NS>
5677
where
5778
ES::Target: EntropySource,
79+
M::Target: chain::Watch<<SP::Target as SignerProvider>::Signer>,
80+
T::Target: BroadcasterInterface,
81+
F::Target: FeeEstimator,
82+
R::Target: Router,
83+
SP::Target: SignerProvider,
84+
L::Target: Logger,
85+
NS::Target: NodeSigner,
5886
{
5987
/// Constructor for the LiquidityManager
6088
///
6189
/// Sets up the required protocol message handlers based on the given [`LiquidityProviderConfig`].
62-
pub fn new(entropy_source: ES, provider_config: Option<LiquidityProviderConfig>) -> Self {
90+
pub fn new(
91+
entropy_source: ES, provider_config: Option<LiquidityProviderConfig>,
92+
channel_manager: Arc<ChannelManager<M, T, ES, NS, SP, F, R, L>>,
93+
) -> Self
94+
where {
6395
let pending_messages = Arc::new(Mutex::new(vec![]));
6496

6597
let lsps0_message_handler =
@@ -71,6 +103,7 @@ where
71103
request_id_to_method_map: Mutex::new(HashMap::new()),
72104
lsps0_message_handler,
73105
provider_config,
106+
channel_manager,
74107
}
75108
}
76109

@@ -108,14 +141,22 @@ where
108141
}
109142
}
110143

111-
impl<ES: Deref> CustomMessageReader for LiquidityManager<ES>
144+
impl<ES: Deref, M: Deref, T: Deref, F: Deref, R: Deref, SP: Deref, L: Deref, NS: Deref>
145+
CustomMessageReader for LiquidityManager<ES, M, T, F, R, SP, L, NS>
112146
where
113147
ES::Target: EntropySource,
148+
M::Target: chain::Watch<<SP::Target as SignerProvider>::Signer>,
149+
T::Target: BroadcasterInterface,
150+
F::Target: FeeEstimator,
151+
R::Target: Router,
152+
SP::Target: SignerProvider,
153+
L::Target: Logger,
154+
NS::Target: NodeSigner,
114155
{
115156
type CustomMessage = RawLSPSMessage;
116157

117-
fn read<R: io::Read>(
118-
&self, message_type: u16, buffer: &mut R,
158+
fn read<RD: io::Read>(
159+
&self, message_type: u16, buffer: &mut RD,
119160
) -> Result<Option<Self::CustomMessage>, lightning::ln::msgs::DecodeError> {
120161
match message_type {
121162
LSPS_MESSAGE_TYPE => Ok(Some(RawLSPSMessage::read(buffer)?)),
@@ -124,9 +165,17 @@ where
124165
}
125166
}
126167

127-
impl<ES: Deref> CustomMessageHandler for LiquidityManager<ES>
168+
impl<ES: Deref, M: Deref, T: Deref, F: Deref, R: Deref, SP: Deref, L: Deref, NS: Deref>
169+
CustomMessageHandler for LiquidityManager<ES, M, T, F, R, SP, L, NS>
128170
where
129171
ES::Target: EntropySource,
172+
M::Target: chain::Watch<<SP::Target as SignerProvider>::Signer>,
173+
T::Target: BroadcasterInterface,
174+
F::Target: FeeEstimator,
175+
R::Target: Router,
176+
SP::Target: SignerProvider,
177+
L::Target: Logger,
178+
NS::Target: NodeSigner,
130179
{
131180
fn handle_custom_message(
132181
&self, msg: Self::CustomMessage, sender_node_id: &PublicKey,

0 commit comments

Comments
 (0)