Skip to content

Commit 2591320

Browse files
committed
Add APIs for send/receive tx complete
1 parent 6779d74 commit 2591320

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

lightning/src/ln/interactivetxs.rs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -493,6 +493,34 @@ impl InteractiveTxConstructor {
493493
self.handle_negotiating_send(|state_machine| state_machine.send_tx_remove_output(serial_id))
494494
}
495495

496+
fn send_tx_complete(&mut self) {
497+
let mut mode = core::mem::take(&mut self.mode);
498+
self.mode = match mode {
499+
ChannelMode::Negotiating(c) => { ChannelMode::OurTxComplete(c.send_tx_complete()) }
500+
ChannelMode::TheirTxComplete(c) => { ChannelMode::NegotiationComplete(c.send_tx_complete()) }
501+
_ => mode
502+
}
503+
}
504+
505+
fn receive_tx_complete(&mut self) {
506+
let mut mode = core::mem::take(&mut self.mode);
507+
self.mode = match mode {
508+
ChannelMode::Negotiating(c) => {
509+
match c.receive_tx_complete() {
510+
Ok(c) => ChannelMode::TheirTxComplete(c),
511+
Err(c) => ChannelMode::NegotiationAborted(c)
512+
}
513+
}
514+
ChannelMode::OurTxComplete(c) => {
515+
match c.receive_tx_complete() {
516+
Ok(c) => ChannelMode::NegotiationComplete(c),
517+
Err(c) => ChannelMode::NegotiationAborted(c)
518+
}
519+
}
520+
_ => mode
521+
}
522+
}
523+
496524
fn handle_negotiating_receive<F>(&mut self, f: F)
497525
where F: FnOnce(InteractiveTxStateMachine<Negotiating>) -> Result<InteractiveTxStateMachine<Negotiating>, InteractiveTxStateMachine<NegotiationAborted>> {
498526
// We use mem::take here because we want to update `self.mode` based on its value and

0 commit comments

Comments
 (0)