Skip to content

Commit 86e2b00

Browse files
committed
Remove OnionMessageProvider
OnionMessageProvider is a super-trait of OnionMessageHandler, but they don't need to be used separately. Additionally, the former is misplaced in the events module. Remove OnionMessageProvider and add it's only method, next_onion_message_for_peer, into OnionMessageHandler.
1 parent a6cd661 commit 86e2b00

File tree

5 files changed

+10
-26
lines changed

5 files changed

+10
-26
lines changed

lightning/src/events/mod.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1846,12 +1846,6 @@ pub trait MessageSendEventsProvider {
18461846
fn get_and_clear_pending_msg_events(&self) -> Vec<MessageSendEvent>;
18471847
}
18481848

1849-
/// A trait indicating an object may generate onion messages to send
1850-
pub trait OnionMessageProvider {
1851-
/// Gets the next pending onion message for the peer with the given node id.
1852-
fn next_onion_message_for_peer(&self, peer_node_id: PublicKey) -> Option<msgs::OnionMessage>;
1853-
}
1854-
18551849
/// A trait indicating an object may generate events.
18561850
///
18571851
/// Events are processed by passing an [`EventHandler`] to [`process_pending_events`].

lightning/src/ln/msgs.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ use core::str::FromStr;
4949
use crate::io::{self, Cursor, Read};
5050
use crate::io_extras::read_to_end;
5151

52-
use crate::events::{MessageSendEventsProvider, OnionMessageProvider};
52+
use crate::events::MessageSendEventsProvider;
5353
use crate::util::chacha20poly1305rfc::ChaChaPolyReadAdapter;
5454
use crate::util::logger;
5555
use crate::util::ser::{LengthReadable, LengthReadableArgs, Readable, ReadableArgs, Writeable, Writer, WithoutLength, FixedLengthReader, HighZeroBytesDroppedBigSize, Hostname, TransactionU16LenLimited, BigSize};
@@ -1497,17 +1497,22 @@ pub trait RoutingMessageHandler : MessageSendEventsProvider {
14971497
fn provided_init_features(&self, their_node_id: &PublicKey) -> InitFeatures;
14981498
}
14991499

1500-
/// A trait to describe an object that can receive onion messages.
1501-
pub trait OnionMessageHandler : OnionMessageProvider {
1500+
/// A handler for received [`OnionMessage`]s and for providing generated ones to send.
1501+
pub trait OnionMessageHandler {
15021502
/// Handle an incoming `onion_message` message from the given peer.
15031503
fn handle_onion_message(&self, peer_node_id: &PublicKey, msg: &OnionMessage);
1504+
1505+
/// Returns the next pending onion message for the peer with the given node id.
1506+
fn next_onion_message_for_peer(&self, peer_node_id: PublicKey) -> Option<OnionMessage>;
1507+
15041508
/// Called when a connection is established with a peer. Can be used to track which peers
15051509
/// advertise onion message support and are online.
15061510
///
15071511
/// May return an `Err(())` if the features the peer supports are not sufficient to communicate
15081512
/// with us. Implementors should be somewhat conservative about doing so, however, as other
15091513
/// message handlers may still wish to communicate with this peer.
15101514
fn peer_connected(&self, their_node_id: &PublicKey, init: &Init, inbound: bool) -> Result<(), ()>;
1515+
15111516
/// Indicates a connection to the peer failed/an existing connection was lost. Allows handlers to
15121517
/// drop and refuse to forward onion messages to this peer.
15131518
fn peer_disconnected(&self, their_node_id: &PublicKey);

lightning/src/ln/peer_handler.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use bitcoin::blockdata::constants::ChainHash;
1919
use bitcoin::secp256k1::{self, Secp256k1, SecretKey, PublicKey};
2020

2121
use crate::sign::{KeysManager, NodeSigner, Recipient};
22-
use crate::events::{MessageSendEvent, MessageSendEventsProvider, OnionMessageProvider};
22+
use crate::events::{MessageSendEvent, MessageSendEventsProvider};
2323
use crate::ln::ChannelId;
2424
use crate::ln::features::{InitFeatures, NodeFeatures};
2525
use crate::ln::msgs;
@@ -107,11 +107,9 @@ impl RoutingMessageHandler for IgnoringMessageHandler {
107107
}
108108
fn processing_queue_high(&self) -> bool { false }
109109
}
110-
impl OnionMessageProvider for IgnoringMessageHandler {
111-
fn next_onion_message_for_peer(&self, _peer_node_id: PublicKey) -> Option<msgs::OnionMessage> { None }
112-
}
113110
impl OnionMessageHandler for IgnoringMessageHandler {
114111
fn handle_onion_message(&self, _their_node_id: &PublicKey, _msg: &msgs::OnionMessage) {}
112+
fn next_onion_message_for_peer(&self, _peer_node_id: PublicKey) -> Option<msgs::OnionMessage> { None }
115113
fn peer_connected(&self, _their_node_id: &PublicKey, _init: &msgs::Init, _inbound: bool) -> Result<(), ()> { Ok(()) }
116114
fn peer_disconnected(&self, _their_node_id: &PublicKey) {}
117115
fn provided_node_features(&self) -> NodeFeatures { NodeFeatures::empty() }

lightning/src/onion_message/functional_tests.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
//! Onion message testing and test utilities live here.
1111
1212
use crate::blinded_path::BlindedPath;
13-
use crate::events::OnionMessageProvider;
1413
use crate::ln::features::InitFeatures;
1514
use crate::ln::msgs::{self, DecodeError, OnionMessageHandler};
1615
use crate::sign::{NodeSigner, Recipient};

lightning/src/onion_message/messenger.rs

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ use crate::blinded_path::BlindedPath;
1919
use crate::blinded_path::message::{advance_path_by_one, ForwardTlvs, ReceiveTlvs};
2020
use crate::blinded_path::utils;
2121
use crate::sign::{EntropySource, KeysManager, NodeSigner, Recipient};
22-
use crate::events::OnionMessageProvider;
2322
use crate::ln::features::{InitFeatures, NodeFeatures};
2423
use crate::ln::msgs::{self, OnionMessageHandler};
2524
use crate::ln::onion_utils;
@@ -645,18 +644,7 @@ where
645644
features.set_onion_messages_optional();
646645
features
647646
}
648-
}
649647

650-
impl<ES: Deref, NS: Deref, L: Deref, MR: Deref, OMH: Deref, CMH: Deref> OnionMessageProvider
651-
for OnionMessenger<ES, NS, L, MR, OMH, CMH>
652-
where
653-
ES::Target: EntropySource,
654-
NS::Target: NodeSigner,
655-
L::Target: Logger,
656-
MR::Target: MessageRouter,
657-
OMH::Target: OffersMessageHandler,
658-
CMH::Target: CustomOnionMessageHandler,
659-
{
660648
fn next_onion_message_for_peer(&self, peer_node_id: PublicKey) -> Option<msgs::OnionMessage> {
661649
let mut pending_msgs = self.pending_messages.lock().unwrap();
662650
if let Some(msgs) = pending_msgs.get_mut(&peer_node_id) {

0 commit comments

Comments
 (0)