Skip to content

Commit 80ea2e5

Browse files
authored
Merge pull request #1219 from TheBlueMatt/2021-12-0.0.104-bindings
0.0.104 bindings
2 parents 2a8a396 + 731fa9d commit 80ea2e5

File tree

3 files changed

+19
-15
lines changed

3 files changed

+19
-15
lines changed

lightning-invoice/src/payment.rs

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ use bitcoin_hashes::sha256::Hash as Sha256;
133133
use lightning::ln::{PaymentHash, PaymentPreimage, PaymentSecret};
134134
use lightning::ln::channelmanager::{ChannelDetails, PaymentId, PaymentSendFailure};
135135
use lightning::ln::msgs::LightningError;
136-
use lightning::routing::scoring::{LockableScore, Score};
136+
use lightning::routing::scoring::{LockableScore, MultiThreadedLockableScore, Score};
137137
use lightning::routing::router::{Payee, Route, RouteParameters};
138138
use lightning::util::events::{Event, EventHandler};
139139
use lightning::util::logger::Logger;
@@ -150,17 +150,15 @@ use std::time::{Duration, SystemTime};
150150
/// See [module-level documentation] for details.
151151
///
152152
/// [module-level documentation]: crate::payment
153-
pub struct InvoicePayer<P: Deref, R, S: Deref, L: Deref, E>
153+
pub struct InvoicePayer<P: Deref, S: Score, R: Deref, SR: Deref<Target = MultiThreadedLockableScore<S>>, L: Deref, E: EventHandler>
154154
where
155155
P::Target: Payer,
156-
R: for <'a> Router<<<S as Deref>::Target as LockableScore<'a>>::Locked>,
157-
S::Target: for <'a> LockableScore<'a>,
156+
R::Target: Router<S>,
158157
L::Target: Logger,
159-
E: EventHandler,
160158
{
161159
payer: P,
162160
router: R,
163-
scorer: S,
161+
scorer: SR,
164162
logger: L,
165163
event_handler: E,
166164
/// Caches the overall attempts at making a payment, which is updated prior to retrying.
@@ -221,20 +219,18 @@ pub enum PaymentError {
221219
Sending(PaymentSendFailure),
222220
}
223221

224-
impl<P: Deref, R, S: Deref, L: Deref, E> InvoicePayer<P, R, S, L, E>
222+
impl<P: Deref, S: Score, R: Deref, SR: Deref<Target = MultiThreadedLockableScore<S>>, L: Deref, E: EventHandler> InvoicePayer<P, S, R, SR, L, E>
225223
where
226224
P::Target: Payer,
227-
R: for <'a> Router<<<S as Deref>::Target as LockableScore<'a>>::Locked>,
228-
S::Target: for <'a> LockableScore<'a>,
225+
R::Target: Router<S>,
229226
L::Target: Logger,
230-
E: EventHandler,
231227
{
232228
/// Creates an invoice payer that retries failed payment paths.
233229
///
234230
/// Will forward any [`Event::PaymentPathFailed`] events to the decorated `event_handler` once
235231
/// `retry_attempts` has been exceeded for a given [`Invoice`].
236232
pub fn new(
237-
payer: P, router: R, scorer: S, logger: L, event_handler: E, retry_attempts: RetryAttempts
233+
payer: P, router: R, scorer: SR, logger: L, event_handler: E, retry_attempts: RetryAttempts
238234
) -> Self {
239235
Self {
240236
payer,
@@ -455,13 +451,11 @@ fn has_expired(params: &RouteParameters) -> bool {
455451
} else { false }
456452
}
457453

458-
impl<P: Deref, R, S: Deref, L: Deref, E> EventHandler for InvoicePayer<P, R, S, L, E>
454+
impl<P: Deref, S: Score, R: Deref, SR: Deref<Target = MultiThreadedLockableScore<S>>, L: Deref, E: EventHandler> EventHandler for InvoicePayer<P, S, R, SR, L, E>
459455
where
460456
P::Target: Payer,
461-
R: for <'a> Router<<<S as Deref>::Target as LockableScore<'a>>::Locked>,
462-
S::Target: for <'a> LockableScore<'a>,
457+
R::Target: Router<S>,
463458
L::Target: Logger,
464-
E: EventHandler,
465459
{
466460
fn handle_event(&self, event: &Event) {
467461
match event {

lightning/src/routing/network_graph.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,8 @@ where C::Target: chain::Access, L::Target: Logger
251251

252252
/// Gets a reference to the underlying [`NetworkGraph`] which was provided in
253253
/// [`NetGraphMsgHandler::new`].
254+
///
255+
/// (C-not exported) as bindings don't support a reference-to-a-reference yet
254256
pub fn network_graph(&self) -> &G {
255257
&self.network_graph
256258
}

lightning/src/routing/scoring.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,14 @@ impl<'a, T: Score + 'a> LockableScore<'a> for MultiThreadedLockableScore<T> {
168168
}
169169
}
170170

171+
#[cfg(c_bindings)]
172+
impl<T: Score> MultiThreadedLockableScore<T> {
173+
/// Creates a new [`MultiThreadedLockableScore`] given an underlying [`Score`].
174+
pub fn new(score: T) -> Self {
175+
MultiThreadedLockableScore { score: Mutex::new(score) }
176+
}
177+
}
178+
171179
#[cfg(c_bindings)]
172180
/// (C-not exported)
173181
impl<'a, T: Writeable> Writeable for RefMut<'a, T> {

0 commit comments

Comments
 (0)