Skip to content

Commit e3f5361

Browse files
Drop Deref indirection for NodeIdLookup
Reduces generics and verbosity across the codebase, should provide equivalent behavior.
1 parent ab82102 commit e3f5361

7 files changed

Lines changed: 23 additions & 47 deletions

File tree

lightning-background-processor/src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -415,7 +415,6 @@ pub const NO_ONION_MESSENGER: Option<
415415
EntropySource = &(dyn EntropySource + Send + Sync),
416416
NodeSigner = &(dyn lightning::sign::NodeSigner + Send + Sync),
417417
Logger = &'static (dyn Logger + Send + Sync),
418-
NodeIdLookUp = DynChannelManager,
419418
NL = &'static DynChannelManager,
420419
MessageRouter = &'static DynMessageRouter,
421420
OffersMessageHandler = lightning::ln::peer_handler::IgnoringMessageHandler,

lightning-dns-resolver/src/lib.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -202,12 +202,6 @@ mod test {
202202
None
203203
}
204204
}
205-
impl Deref for DummyNodeLookup {
206-
type Target = DummyNodeLookup;
207-
fn deref(&self) -> &DummyNodeLookup {
208-
self
209-
}
210-
}
211205

212206
struct DirectlyConnectedRouter {}
213207
impl MessageRouter for DirectlyConnectedRouter {

lightning/src/blinded_path/message.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ use crate::types::payment::PaymentHash;
3131
use crate::util::scid_utils;
3232
use crate::util::ser::{FixedLengthReader, LengthReadableArgs, Readable, Writeable, Writer};
3333

34-
use core::ops::Deref;
3534
use core::time::Duration;
3635
use core::{cmp, mem};
3736

@@ -192,11 +191,10 @@ impl BlindedMessagePath {
192191
/// introduction node.
193192
///
194193
/// Will only modify `self` when returning `Ok`.
195-
pub fn advance_path_by_one<NS: NodeSigner, NL: Deref, T>(
194+
pub fn advance_path_by_one<NS: NodeSigner, NL: NodeIdLookUp, T>(
196195
&mut self, node_signer: &NS, node_id_lookup: &NL, secp_ctx: &Secp256k1<T>,
197196
) -> Result<(), ()>
198197
where
199-
NL::Target: NodeIdLookUp,
200198
T: secp256k1::Signing + secp256k1::Verification,
201199
{
202200
let control_tlvs_ss = node_signer.ecdh(Recipient::Node, &self.0.blinding_point, None)?;

lightning/src/blinded_path/mod.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,9 @@ impl NodeIdLookUp for EmptyNodeIdLookUp {
8888
}
8989
}
9090

91-
impl Deref for EmptyNodeIdLookUp {
92-
type Target = EmptyNodeIdLookUp;
93-
fn deref(&self) -> &Self {
94-
self
91+
impl<T: NodeIdLookUp + ?Sized, N: Deref<Target = T>> NodeIdLookUp for N {
92+
fn next_node_id(&self, short_channel_id: u64) -> Option<PublicKey> {
93+
self.deref().next_node_id(short_channel_id)
9594
}
9695
}
9796

lightning/src/blinded_path/payment.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ use crate::util::ser::{
3434
};
3535

3636
use core::mem;
37-
use core::ops::Deref;
3837

3938
#[allow(unused_imports)]
4039
use crate::prelude::*;
@@ -177,11 +176,10 @@ impl BlindedPaymentPath {
177176
/// introduction node.
178177
///
179178
/// Will only modify `self` when returning `Ok`.
180-
pub fn advance_path_by_one<NS: NodeSigner, NL: Deref, T>(
179+
pub fn advance_path_by_one<NS: NodeSigner, NL: NodeIdLookUp, T>(
181180
&mut self, node_signer: &NS, node_id_lookup: &NL, secp_ctx: &Secp256k1<T>,
182181
) -> Result<(), ()>
183182
where
184-
NL::Target: NodeIdLookUp,
185183
T: secp256k1::Signing + secp256k1::Verification,
186184
{
187185
match self.decrypt_intro_payload(node_signer) {

lightning/src/ln/outbound_payment.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -948,7 +948,7 @@ impl<L: Logger> OutboundPayments<L> {
948948

949949
#[rustfmt::skip]
950950
pub(super) fn send_payment_for_bolt12_invoice<
951-
R: Router, ES: EntropySource, NS: NodeSigner, NL: Deref, IH, SP
951+
R: Router, ES: EntropySource, NS: NodeSigner, NL: NodeIdLookUp, IH, SP
952952
>(
953953
&self, invoice: &Bolt12Invoice, payment_id: PaymentId, router: &R,
954954
first_hops: Vec<ChannelDetails>, features: Bolt12InvoiceFeatures, inflight_htlcs: IH,
@@ -958,7 +958,6 @@ impl<L: Logger> OutboundPayments<L> {
958958
send_payment_along_path: SP,
959959
) -> Result<(), Bolt12PaymentError>
960960
where
961-
NL::Target: NodeIdLookUp,
962961
IH: Fn() -> InFlightHtlcs,
963962
SP: Fn(SendAlongPathArgs) -> Result<(), APIError>,
964963
{
@@ -990,7 +989,7 @@ impl<L: Logger> OutboundPayments<L> {
990989

991990
#[rustfmt::skip]
992991
fn send_payment_for_bolt12_invoice_internal<
993-
R: Router, ES: EntropySource, NS: NodeSigner, NL: Deref, IH, SP
992+
R: Router, ES: EntropySource, NS: NodeSigner, NL: NodeIdLookUp, IH, SP
994993
>(
995994
&self, payment_id: PaymentId, payment_hash: PaymentHash,
996995
keysend_preimage: Option<PaymentPreimage>, invoice_request: Option<&InvoiceRequest>,
@@ -1002,7 +1001,6 @@ impl<L: Logger> OutboundPayments<L> {
10021001
send_payment_along_path: SP,
10031002
) -> Result<(), Bolt12PaymentError>
10041003
where
1005-
NL::Target: NodeIdLookUp,
10061004
IH: Fn() -> InFlightHtlcs,
10071005
SP: Fn(SendAlongPathArgs) -> Result<(), APIError>,
10081006
{

lightning/src/onion_message/messenger.rs

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,7 @@ pub trait AOnionMessenger {
7272
/// A type implementing [`Logger`]
7373
type Logger: Logger;
7474
/// A type implementing [`NodeIdLookUp`]
75-
type NodeIdLookUp: NodeIdLookUp + ?Sized;
76-
/// A type that may be dereferenced to [`Self::NodeIdLookUp`]
77-
type NL: Deref<Target = Self::NodeIdLookUp>;
75+
type NL: NodeIdLookUp;
7876
/// A type implementing [`MessageRouter`]
7977
type MessageRouter: MessageRouter;
8078
/// A type implementing [`OffersMessageHandler`]
@@ -113,15 +111,14 @@ impl<
113111
ES: EntropySource,
114112
NS: NodeSigner,
115113
L: Logger,
116-
NL: Deref,
114+
NL: NodeIdLookUp,
117115
MR: MessageRouter,
118116
OMH: Deref,
119117
APH: Deref,
120118
DRH: Deref,
121119
CMH: Deref,
122120
> AOnionMessenger for OnionMessenger<ES, NS, L, NL, MR, OMH, APH, DRH, CMH>
123121
where
124-
NL::Target: NodeIdLookUp,
125122
OMH::Target: OffersMessageHandler,
126123
APH::Target: AsyncPaymentsMessageHandler,
127124
DRH::Target: DNSResolverMessageHandler,
@@ -130,7 +127,6 @@ where
130127
type EntropySource = ES;
131128
type NodeSigner = NS;
132129
type Logger = L;
133-
type NodeIdLookUp = NL::Target;
134130
type NL = NL;
135131
type MessageRouter = MR;
136132
type OffersMessageHandler = OMH::Target;
@@ -271,14 +267,13 @@ pub struct OnionMessenger<
271267
ES: EntropySource,
272268
NS: NodeSigner,
273269
L: Logger,
274-
NL: Deref,
270+
NL: NodeIdLookUp,
275271
MR: MessageRouter,
276272
OMH: Deref,
277273
APH: Deref,
278274
DRH: Deref,
279275
CMH: Deref,
280276
> where
281-
NL::Target: NodeIdLookUp,
282277
OMH::Target: OffersMessageHandler,
283278
APH::Target: AsyncPaymentsMessageHandler,
284279
DRH::Target: DNSResolverMessageHandler,
@@ -1037,16 +1032,13 @@ pub enum PeeledOnion<T: OnionMessageContents> {
10371032
pub fn create_onion_message_resolving_destination<
10381033
ES: EntropySource,
10391034
NS: NodeSigner,
1040-
NL: Deref,
1035+
NL: NodeIdLookUp,
10411036
T: OnionMessageContents,
10421037
>(
10431038
entropy_source: &ES, node_signer: &NS, node_id_lookup: &NL,
10441039
network_graph: &ReadOnlyNetworkGraph, secp_ctx: &Secp256k1<secp256k1::All>,
10451040
mut path: OnionMessagePath, contents: T, reply_path: Option<BlindedMessagePath>,
1046-
) -> Result<(PublicKey, OnionMessage, Vec<SocketAddress>), SendError>
1047-
where
1048-
NL::Target: NodeIdLookUp,
1049-
{
1041+
) -> Result<(PublicKey, OnionMessage, Vec<SocketAddress>), SendError> {
10501042
path.destination.resolve(network_graph);
10511043
create_onion_message(
10521044
entropy_source,
@@ -1070,14 +1062,16 @@ where
10701062
/// - unless it can be resolved by [`NodeIdLookUp::next_node_id`].
10711063
/// Use [`create_onion_message_resolving_destination`] instead to resolve the introduction node
10721064
/// first with a [`ReadOnlyNetworkGraph`].
1073-
pub fn create_onion_message<ES: EntropySource, NS: NodeSigner, NL: Deref, T: OnionMessageContents>(
1065+
pub fn create_onion_message<
1066+
ES: EntropySource,
1067+
NS: NodeSigner,
1068+
NL: NodeIdLookUp,
1069+
T: OnionMessageContents,
1070+
>(
10741071
entropy_source: &ES, node_signer: &NS, node_id_lookup: &NL,
10751072
secp_ctx: &Secp256k1<secp256k1::All>, path: OnionMessagePath, contents: T,
10761073
reply_path: Option<BlindedMessagePath>,
1077-
) -> Result<(PublicKey, OnionMessage, Vec<SocketAddress>), SendError>
1078-
where
1079-
NL::Target: NodeIdLookUp,
1080-
{
1074+
) -> Result<(PublicKey, OnionMessage, Vec<SocketAddress>), SendError> {
10811075
let OnionMessagePath { intermediate_nodes, mut destination, first_node_addresses } = path;
10821076
if let Destination::BlindedPath(ref path) = destination {
10831077
if path.blinded_hops().is_empty() {
@@ -1374,15 +1368,14 @@ impl<
13741368
ES: EntropySource,
13751369
NS: NodeSigner,
13761370
L: Logger,
1377-
NL: Deref,
1371+
NL: NodeIdLookUp,
13781372
MR: MessageRouter,
13791373
OMH: Deref,
13801374
APH: Deref,
13811375
DRH: Deref,
13821376
CMH: Deref,
13831377
> OnionMessenger<ES, NS, L, NL, MR, OMH, APH, DRH, CMH>
13841378
where
1385-
NL::Target: NodeIdLookUp,
13861379
OMH::Target: OffersMessageHandler,
13871380
APH::Target: AsyncPaymentsMessageHandler,
13881381
DRH::Target: DNSResolverMessageHandler,
@@ -2014,15 +2007,14 @@ impl<
20142007
ES: EntropySource,
20152008
NS: NodeSigner,
20162009
L: Logger,
2017-
NL: Deref,
2010+
NL: NodeIdLookUp,
20182011
MR: MessageRouter,
20192012
OMH: Deref,
20202013
APH: Deref,
20212014
DRH: Deref,
20222015
CMH: Deref,
20232016
> EventsProvider for OnionMessenger<ES, NS, L, NL, MR, OMH, APH, DRH, CMH>
20242017
where
2025-
NL::Target: NodeIdLookUp,
20262018
OMH::Target: OffersMessageHandler,
20272019
APH::Target: AsyncPaymentsMessageHandler,
20282020
DRH::Target: DNSResolverMessageHandler,
@@ -2131,15 +2123,14 @@ impl<
21312123
ES: EntropySource,
21322124
NS: NodeSigner,
21332125
L: Logger,
2134-
NL: Deref,
2126+
NL: NodeIdLookUp,
21352127
MR: MessageRouter,
21362128
OMH: Deref,
21372129
APH: Deref,
21382130
DRH: Deref,
21392131
CMH: Deref,
21402132
> BaseMessageHandler for OnionMessenger<ES, NS, L, NL, MR, OMH, APH, DRH, CMH>
21412133
where
2142-
NL::Target: NodeIdLookUp,
21432134
OMH::Target: OffersMessageHandler,
21442135
APH::Target: AsyncPaymentsMessageHandler,
21452136
DRH::Target: DNSResolverMessageHandler,
@@ -2199,15 +2190,14 @@ impl<
21992190
ES: EntropySource,
22002191
NS: NodeSigner,
22012192
L: Logger,
2202-
NL: Deref,
2193+
NL: NodeIdLookUp,
22032194
MR: MessageRouter,
22042195
OMH: Deref,
22052196
APH: Deref,
22062197
DRH: Deref,
22072198
CMH: Deref,
22082199
> OnionMessageHandler for OnionMessenger<ES, NS, L, NL, MR, OMH, APH, DRH, CMH>
22092200
where
2210-
NL::Target: NodeIdLookUp,
22112201
OMH::Target: OffersMessageHandler,
22122202
APH::Target: AsyncPaymentsMessageHandler,
22132203
DRH::Target: DNSResolverMessageHandler,

0 commit comments

Comments
 (0)