Skip to content

Commit 5fa204e

Browse files
committed
Remove ChannelPhase::UnfundedV2 pattern matches
Exposing ChannelPhase in ChannelManager has led to verbose match statements, which need to be modified each time a ChannelPhase is added. Making ChannelPhase an implementation detail of Channel would help avoid this. As a step in this direction, update ChannelManager methods to use ChannelPhase::as_unfunded_v2_mut and ChannelPhase::into_unfunded_v2 methods.
1 parent e10671e commit 5fa204e

File tree

2 files changed

+29
-21
lines changed

2 files changed

+29
-21
lines changed

lightning/src/ln/channel.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1201,6 +1201,14 @@ impl<'a, SP: Deref> ChannelPhase<SP> where
12011201
}
12021202
}
12031203

1204+
pub fn into_unfunded_v2(self) -> Option<PendingV2Channel<SP>> {
1205+
if let ChannelPhase::UnfundedV2(channel) = self {
1206+
Some(channel)
1207+
} else {
1208+
None
1209+
}
1210+
}
1211+
12041212
pub fn signer_maybe_unblocked<L: Deref>(
12051213
&mut self, chain_hash: ChainHash, logger: &L,
12061214
) -> Option<SignerResumeUpdates> where L::Target: Logger {

lightning/src/ln/channelmanager.rs

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8241,44 +8241,44 @@ This indicates a bug inside LDK. Please report this error at https://github.com/
82418241

82428242
fn internal_tx_add_input(&self, counterparty_node_id: PublicKey, msg: &msgs::TxAddInput) -> Result<(), MsgHandleErrInternal> {
82438243
self.internal_tx_msg(&counterparty_node_id, msg.channel_id, |channel_phase: &mut ChannelPhase<SP>| {
8244-
match channel_phase {
8245-
ChannelPhase::UnfundedV2(ref mut channel) => {
8244+
match channel_phase.as_unfunded_v2_mut() {
8245+
Some(channel) => {
82468246
Ok(channel.tx_add_input(msg).into_msg_send_event(counterparty_node_id))
82478247
},
8248-
_ => Err("tx_add_input"),
8248+
None => Err("tx_add_input"),
82498249
}
82508250
})
82518251
}
82528252

82538253
fn internal_tx_add_output(&self, counterparty_node_id: PublicKey, msg: &msgs::TxAddOutput) -> Result<(), MsgHandleErrInternal> {
82548254
self.internal_tx_msg(&counterparty_node_id, msg.channel_id, |channel_phase: &mut ChannelPhase<SP>| {
8255-
match channel_phase {
8256-
ChannelPhase::UnfundedV2(ref mut channel) => {
8255+
match channel_phase.as_unfunded_v2_mut() {
8256+
Some(channel) => {
82578257
Ok(channel.tx_add_output(msg).into_msg_send_event(counterparty_node_id))
82588258
},
8259-
_ => Err("tx_add_output"),
8259+
None => Err("tx_add_output"),
82608260
}
82618261
})
82628262
}
82638263

82648264
fn internal_tx_remove_input(&self, counterparty_node_id: PublicKey, msg: &msgs::TxRemoveInput) -> Result<(), MsgHandleErrInternal> {
82658265
self.internal_tx_msg(&counterparty_node_id, msg.channel_id, |channel_phase: &mut ChannelPhase<SP>| {
8266-
match channel_phase {
8267-
ChannelPhase::UnfundedV2(ref mut channel) => {
8266+
match channel_phase.as_unfunded_v2_mut() {
8267+
Some(channel) => {
82688268
Ok(channel.tx_remove_input(msg).into_msg_send_event(counterparty_node_id))
82698269
},
8270-
_ => Err("tx_remove_input"),
8270+
None => Err("tx_remove_input"),
82718271
}
82728272
})
82738273
}
82748274

82758275
fn internal_tx_remove_output(&self, counterparty_node_id: PublicKey, msg: &msgs::TxRemoveOutput) -> Result<(), MsgHandleErrInternal> {
82768276
self.internal_tx_msg(&counterparty_node_id, msg.channel_id, |channel_phase: &mut ChannelPhase<SP>| {
8277-
match channel_phase {
8278-
ChannelPhase::UnfundedV2(ref mut channel) => {
8277+
match channel_phase.as_unfunded_v2_mut() {
8278+
Some(channel) => {
82798279
Ok(channel.tx_remove_output(msg).into_msg_send_event(counterparty_node_id))
82808280
},
8281-
_ => Err("tx_remove_output"),
8281+
None => Err("tx_remove_output"),
82828282
}
82838283
})
82848284
}
@@ -8297,10 +8297,10 @@ This indicates a bug inside LDK. Please report this error at https://github.com/
82978297
match peer_state.channel_by_id.entry(msg.channel_id) {
82988298
hash_map::Entry::Occupied(mut chan_phase_entry) => {
82998299
let channel_phase = chan_phase_entry.get_mut();
8300-
let (msg_send_event_opt, signing_session_opt) = match channel_phase {
8301-
ChannelPhase::UnfundedV2(channel) => channel.tx_complete(msg)
8300+
let (msg_send_event_opt, signing_session_opt) = match channel_phase.as_unfunded_v2_mut() {
8301+
Some(channel) => channel.tx_complete(msg)
83028302
.into_msg_send_event_or_signing_session(counterparty_node_id),
8303-
_ => try_chan_phase_entry!(self, peer_state, Err(ChannelError::Close(
8303+
None => try_chan_phase_entry!(self, peer_state, Err(ChannelError::Close(
83048304
(
83058305
"Got a tx_complete message with no interactive transaction construction expected or in-progress".into(),
83068306
ClosureReason::HolderForceClosed { broadcasted_latest_txn: Some(false) },
@@ -8310,18 +8310,18 @@ This indicates a bug inside LDK. Please report this error at https://github.com/
83108310
peer_state.pending_msg_events.push(msg_send_event);
83118311
};
83128312
if let Some(mut signing_session) = signing_session_opt {
8313-
let (commitment_signed, funding_ready_for_sig_event_opt) = match chan_phase_entry.get_mut() {
8314-
ChannelPhase::UnfundedV2(chan) => {
8313+
let (commitment_signed, funding_ready_for_sig_event_opt) = match chan_phase_entry.get_mut().as_unfunded_v2_mut() {
8314+
Some(chan) => {
83158315
chan.funding_tx_constructed(&mut signing_session, &self.logger)
83168316
},
8317-
_ => Err(ChannelError::Warn(
8317+
None => Err(ChannelError::Warn(
83188318
"Got a tx_complete message with no interactive transaction construction expected or in-progress"
83198319
.into())),
83208320
}.map_err(|err| MsgHandleErrInternal::send_err_msg_no_close(format!("{}", err), msg.channel_id))?;
83218321
let (channel_id, channel_phase) = chan_phase_entry.remove_entry();
8322-
let channel = match channel_phase {
8323-
ChannelPhase::UnfundedV2(chan) => chan.into_channel(signing_session),
8324-
_ => {
8322+
let channel = match channel_phase.into_unfunded_v2() {
8323+
Some(chan) => chan.into_channel(signing_session),
8324+
None => {
83258325
debug_assert!(false); // It cannot be another variant as we are in the `Ok` branch of the above match.
83268326
Err(ChannelError::Warn(
83278327
"Got a tx_complete message with no interactive transaction construction expected or in-progress"

0 commit comments

Comments
 (0)