]> git.bitcoin.ninja Git - rust-lightning/commit
Remove message type bound on `ResponseInstruction`
authorMatt Corallo <git@bluematt.me>
Wed, 21 Aug 2024 15:32:14 +0000 (15:32 +0000)
committerMatt Corallo <git@bluematt.me>
Thu, 22 Aug 2024 22:17:54 +0000 (22:17 +0000)
commitcd93a41bd690373933d42e9b78e4b16c75be9f93
tree96b99b71308ecd39250faaa7f35b5fe73d0cffee
parentbbfa15eb18faf4ca67986d7935d179c0526b1881
Remove message type bound on `ResponseInstruction`

Our onion message handlers generally have one or more methods which
return a `ResponseInstruction` parameterized with the expected
message type (enum) of the message handler.

Sadly, that restriction is impossible to represent in our bindings -
our bindings concretize all LDK structs, enums, and traits into a
single concrete instance with generics set to our concrete trait
instances (which hold a jump table). This prevents us from having
multiple instances of `ResponseInstruction` structs for different
message types.

Our bindings do, however, support different parameterizations of
standard enums, including `Option`s and tuples.

In order to support bindings for the onion message handlers, we
are thus forced into std types bound by expected message types,
which we do here by making `ResponseInstruction` contain only the
instructions and generally using it as a two-tuple of
`(message, ResponseInstruction)`.
fuzz/src/onion_message.rs
lightning/src/ln/channelmanager.rs
lightning/src/ln/peer_handler.rs
lightning/src/onion_message/async_payments.rs
lightning/src/onion_message/functional_tests.rs
lightning/src/onion_message/messenger.rs
lightning/src/onion_message/offers.rs