]> git.bitcoin.ninja Git - rust-lightning/commit
Add a parallel async event handler to `OnionMessenger`
authorMatt Corallo <git@bluematt.me>
Fri, 10 May 2024 20:52:10 +0000 (20:52 +0000)
committerMatt Corallo <git@bluematt.me>
Mon, 3 Jun 2024 18:51:27 +0000 (18:51 +0000)
commit3abec4f03194d818b72bf377b2086563c56f1812
treed9f94c877e3bcd5a5c3c092b725ccaf943776183
parent9ef61748e419e3e993784ee1c7f785ed434f5c67
Add a parallel async event handler to `OnionMessenger`

This adds an `OnionMessenger::process_pending_events_async`
mirroring the same in `ChannelManager`. However, unlike the one in
`ChannelManager`, this processes the events in parallel by spawning
all futures and using the new `MultiFuturePoller`.

Because `OnionMessenger` just generates a stream of messages to
store/fetch, we first process all the events to store new messages,
`await` them, then process all the events to fetch stored messages,
ensuring reordering shouldn't result in lost messages (unless we
race with a peer disconnection, which could happen anyway).
lightning/src/onion_message/messenger.rs