Skip to content

Commit 39b6233

Browse files
committed
Impl ReadableArgs for Arc<ChannelManager>, not just ChannelManager.
This provides a simple wrapper for deserializing right into an Arc<ChannelManager>, which improves UX a tiny bit when working with SimpleArcChannelManager types.
1 parent c1dc8e3 commit 39b6233

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

lightning/src/ln/channelmanager.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3353,6 +3353,21 @@ pub struct ChannelManagerReadArgs<'a, ChanSigner: 'a + ChannelKeys, M: Deref, T:
33533353
pub channel_monitors: &'a mut HashMap<OutPoint, &'a mut ChannelMonitor<ChanSigner>>,
33543354
}
33553355

3356+
// Implement ReadableArgs for an Arc'd ChannelManager to make it a bit easier to work with the
3357+
// SipmleArcChannelManager type:
3358+
impl<'a, R : ::std::io::Read, ChanSigner: ChannelKeys + Readable<R>, M: Deref, T: Deref, K: Deref, F: Deref>
3359+
ReadableArgs<R, ChannelManagerReadArgs<'a, ChanSigner, M, T, K, F>> for (Sha256dHash, Arc<ChannelManager<ChanSigner, M, T, K, F>>)
3360+
where M::Target: ManyChannelMonitor<ChanSigner>,
3361+
T::Target: BroadcasterInterface,
3362+
K::Target: KeysInterface<ChanKeySigner = ChanSigner>,
3363+
F::Target: FeeEstimator,
3364+
{
3365+
fn read(reader: &mut R, args: ChannelManagerReadArgs<'a, ChanSigner, M, T, K, F>) -> Result<Self, DecodeError> {
3366+
let (blockhash, chan_manager) = <(Sha256dHash, ChannelManager<ChanSigner, M, T, K, F>)>::read(reader, args)?;
3367+
Ok((blockhash, Arc::new(chan_manager)))
3368+
}
3369+
}
3370+
33563371
impl<'a, R : ::std::io::Read, ChanSigner: ChannelKeys + Readable<R>, M: Deref, T: Deref, K: Deref, F: Deref>
33573372
ReadableArgs<R, ChannelManagerReadArgs<'a, ChanSigner, M, T, K, F>> for (Sha256dHash, ChannelManager<ChanSigner, M, T, K, F>)
33583373
where M::Target: ManyChannelMonitor<ChanSigner>,

0 commit comments

Comments
 (0)