Skip to content

Commit c55f79b

Browse files
committed
Add APIs for send/receive tx complete
1 parent 6e2d24e commit c55f79b

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
@@ -489,6 +489,34 @@ impl InteractiveTxConstructor {
489489
self.handle_negotiating_send(|state_machine| state_machine.send_tx_remove_output(serial_id))
490490
}
491491

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

0 commit comments

Comments
 (0)