Skip to content

Commit 198f27a

Browse files
committed
Separate Clone from Sign
Clone requires Sized, which prevents Sign from being a dyn object.
1 parent d098db9 commit 198f27a

File tree

6 files changed

+21
-21
lines changed

6 files changed

+21
-21
lines changed

background-processor/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ impl BackgroundProcessor {
6464
/// [`ChannelManager::write`]: lightning::ln::channelmanager::ChannelManager#impl-Writeable
6565
/// [`FilesystemPersister::persist_manager`]: lightning_persister::FilesystemPersister::persist_manager
6666
pub fn start<PM, Signer, M, T, K, F, L>(persist_manager: PM, manager: Arc<ChannelManager<Signer, Arc<M>, Arc<T>, Arc<K>, Arc<F>, Arc<L>>>, logger: Arc<L>) -> Self
67-
where Signer: 'static + Sign,
67+
where Signer: 'static + Sign+Clone,
6868
M: 'static + chain::Watch<Signer>,
6969
T: 'static + BroadcasterInterface,
7070
K: 'static + KeysInterface<Signer=Signer>,
@@ -291,7 +291,7 @@ mod tests {
291291
fn test_persist_error() {
292292
// Test that if we encounter an error during manager persistence, the thread panics.
293293
fn persist_manager<Signer, M, T, K, F, L>(_data: &ChannelManager<Signer, Arc<M>, Arc<T>, Arc<K>, Arc<F>, Arc<L>>) -> Result<(), std::io::Error>
294-
where Signer: 'static + Sign,
294+
where Signer: 'static + Sign+Clone,
295295
M: 'static + chain::Watch<Signer>,
296296
T: 'static + BroadcasterInterface,
297297
K: 'static + KeysInterface<Signer=Signer>,

lightning-block-sync/src/init.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ BlockSourceResult<ValidatedBlockHeader> {
6060
/// async fn init_sync<
6161
/// B: BlockSource,
6262
/// K: KeysInterface<Signer = S>,
63-
/// S: keysinterface::Sign,
63+
/// S: keysinterface::Sign + Clone,
6464
/// T: BroadcasterInterface,
6565
/// F: FeeEstimator,
6666
/// L: Logger,

lightning-persister/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ impl<Signer: Sign> DiskWriteable for ChannelMonitor<Signer> {
5656
}
5757
}
5858

59-
impl<Signer: Sign, M, T, K, F, L> DiskWriteable for ChannelManager<Signer, Arc<M>, Arc<T>, Arc<K>, Arc<F>, Arc<L>>
59+
impl<Signer: Sign+Clone, M, T, K, F, L> DiskWriteable for ChannelManager<Signer, Arc<M>, Arc<T>, Arc<K>, Arc<F>, Arc<L>>
6060
where M: chain::Watch<Signer>,
6161
T: BroadcasterInterface,
6262
K: KeysInterface<Signer=Signer>,
@@ -94,7 +94,7 @@ impl FilesystemPersister {
9494
data_dir: String,
9595
manager: &ChannelManager<Signer, Arc<M>, Arc<T>, Arc<K>, Arc<F>, Arc<L>>
9696
) -> Result<(), std::io::Error>
97-
where Signer: Sign,
97+
where Signer: Sign+Clone,
9898
M: chain::Watch<Signer>,
9999
T: BroadcasterInterface,
100100
K: KeysInterface<Signer=Signer>,

lightning/src/chain/keysinterface.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ impl Readable for SpendableOutputDescriptor {
226226
/// of LN security model, orthogonal of key management issues.
227227
// TODO: We should remove Clone by instead requesting a new Sign copy when we create
228228
// ChannelMonitors instead of expecting to clone the one out of the Channel into the monitors.
229-
pub trait Sign : Send+Clone + Writeable {
229+
pub trait Sign : Send + Writeable {
230230
/// Gets the per-commitment point for a specific commitment number
231231
///
232232
/// Note that the commitment number starts at (1 << 48) - 1 and counts backwards.

lightning/src/ln/channel.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ pub struct CounterpartyForwardingInfo {
303303
//
304304
// Holder designates channel data owned for the benefice of the user client.
305305
// Counterparty designates channel data owned by the another channel participant entity.
306-
pub(super) struct Channel<Signer: Sign> {
306+
pub(super) struct Channel<Signer: Sign+Clone> {
307307
config: ChannelConfig,
308308

309309
user_id: u64,
@@ -489,7 +489,7 @@ macro_rules! secp_check {
489489
};
490490
}
491491

492-
impl<Signer: Sign> Channel<Signer> {
492+
impl<Signer: Sign+Clone> Channel<Signer> {
493493
// Convert constants + channel value to limits:
494494
fn get_holder_max_htlc_value_in_flight_msat(channel_value_satoshis: u64) -> u64 {
495495
channel_value_satoshis * 1000 / 10 //TODO
@@ -4305,7 +4305,7 @@ impl Readable for InboundHTLCRemovalReason {
43054305
}
43064306
}
43074307

4308-
impl<Signer: Sign> Writeable for Channel<Signer> {
4308+
impl<Signer: Sign+Clone> Writeable for Channel<Signer> {
43094309
fn write(&self, writer: &mut Writer) -> Result<(), ::std::io::Error> {
43104310
// Note that we write out as if remove_uncommitted_htlcs_and_mark_paused had just been
43114311
// called but include holding cell updates (and obviously we don't modify self).
@@ -4502,7 +4502,7 @@ impl<Signer: Sign> Writeable for Channel<Signer> {
45024502
}
45034503

45044504
const MAX_ALLOC_SIZE: usize = 64*1024;
4505-
impl<'a, Signer: Sign, K: Deref> ReadableArgs<&'a K> for Channel<Signer>
4505+
impl<'a, Signer: Sign+Clone, K: Deref> ReadableArgs<&'a K> for Channel<Signer>
45064506
where K::Target: KeysInterface<Signer = Signer> {
45074507
fn read<R : ::std::io::Read>(reader: &mut R, keys_source: &'a K) -> Result<Self, DecodeError> {
45084508
let _ver: u8 = Readable::read(reader)?;

lightning/src/ln/channelmanager.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ pub(super) enum RAACommitmentOrder {
317317
}
318318

319319
// Note this is only exposed in cfg(test):
320-
pub(super) struct ChannelHolder<Signer: Sign> {
320+
pub(super) struct ChannelHolder<Signer: Sign+Clone> {
321321
pub(super) by_id: HashMap<[u8; 32], Channel<Signer>>,
322322
pub(super) short_to_id: HashMap<u64, [u8; 32]>,
323323
/// short channel id -> forward infos. Key of 0 means payments received
@@ -409,7 +409,7 @@ pub type SimpleRefChannelManager<'a, 'b, 'c, 'd, 'e, M, T, F, L> = ChannelManage
409409
/// essentially you should default to using a SimpleRefChannelManager, and use a
410410
/// SimpleArcChannelManager when you require a ChannelManager with a static lifetime, such as when
411411
/// you're using lightning-net-tokio.
412-
pub struct ChannelManager<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>
412+
pub struct ChannelManager<Signer: Sign+Clone, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>
413413
where M::Target: chain::Watch<Signer>,
414414
T::Target: BroadcasterInterface,
415415
K::Target: KeysInterface<Signer = Signer>,
@@ -790,7 +790,7 @@ macro_rules! maybe_break_monitor_err {
790790
}
791791
}
792792

793-
impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<Signer, M, T, K, F, L>
793+
impl<Signer: Sign+Clone, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<Signer, M, T, K, F, L>
794794
where M::Target: chain::Watch<Signer>,
795795
T::Target: BroadcasterInterface,
796796
K::Target: KeysInterface<Signer = Signer>,
@@ -3229,7 +3229,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
32293229
}
32303230
}
32313231

3232-
impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> MessageSendEventsProvider for ChannelManager<Signer, M, T, K, F, L>
3232+
impl<Signer: Sign+Clone, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> MessageSendEventsProvider for ChannelManager<Signer, M, T, K, F, L>
32333233
where M::Target: chain::Watch<Signer>,
32343234
T::Target: BroadcasterInterface,
32353235
K::Target: KeysInterface<Signer = Signer>,
@@ -3248,7 +3248,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> MessageSend
32483248
}
32493249
}
32503250

3251-
impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> EventsProvider for ChannelManager<Signer, M, T, K, F, L>
3251+
impl<Signer: Sign+Clone, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> EventsProvider for ChannelManager<Signer, M, T, K, F, L>
32523252
where M::Target: chain::Watch<Signer>,
32533253
T::Target: BroadcasterInterface,
32543254
K::Target: KeysInterface<Signer = Signer>,
@@ -3267,7 +3267,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> EventsProvi
32673267
}
32683268
}
32693269

3270-
impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> chain::Listen for ChannelManager<Signer, M, T, K, F, L>
3270+
impl<Signer: Sign+Clone, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> chain::Listen for ChannelManager<Signer, M, T, K, F, L>
32713271
where
32723272
M::Target: chain::Watch<Signer>,
32733273
T::Target: BroadcasterInterface,
@@ -3285,7 +3285,7 @@ where
32853285
}
32863286
}
32873287

3288-
impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<Signer, M, T, K, F, L>
3288+
impl<Signer: Sign+Clone, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<Signer, M, T, K, F, L>
32893289
where M::Target: chain::Watch<Signer>,
32903290
T::Target: BroadcasterInterface,
32913291
K::Target: KeysInterface<Signer = Signer>,
@@ -3480,7 +3480,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
34803480
}
34813481
}
34823482

3483-
impl<Signer: Sign, M: Deref + Sync + Send, T: Deref + Sync + Send, K: Deref + Sync + Send, F: Deref + Sync + Send, L: Deref + Sync + Send>
3483+
impl<Signer: Sign+Clone, M: Deref + Sync + Send, T: Deref + Sync + Send, K: Deref + Sync + Send, F: Deref + Sync + Send, L: Deref + Sync + Send>
34843484
ChannelMessageHandler for ChannelManager<Signer, M, T, K, F, L>
34853485
where M::Target: chain::Watch<Signer>,
34863486
T::Target: BroadcasterInterface,
@@ -4000,7 +4000,7 @@ impl Readable for HTLCForwardInfo {
40004000
}
40014001
}
40024002

4003-
impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> Writeable for ChannelManager<Signer, M, T, K, F, L>
4003+
impl<Signer: Sign+Clone, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> Writeable for ChannelManager<Signer, M, T, K, F, L>
40044004
where M::Target: chain::Watch<Signer>,
40054005
T::Target: BroadcasterInterface,
40064006
K::Target: KeysInterface<Signer = Signer>,
@@ -4177,7 +4177,7 @@ impl<'a, Signer: 'a + Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>
41774177

41784178
// Implement ReadableArgs for an Arc'd ChannelManager to make it a bit easier to work with the
41794179
// SipmleArcChannelManager type:
4180-
impl<'a, Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>
4180+
impl<'a, Signer: Sign+Clone, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>
41814181
ReadableArgs<ChannelManagerReadArgs<'a, Signer, M, T, K, F, L>> for (BlockHash, Arc<ChannelManager<Signer, M, T, K, F, L>>)
41824182
where M::Target: chain::Watch<Signer>,
41834183
T::Target: BroadcasterInterface,
@@ -4191,7 +4191,7 @@ impl<'a, Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>
41914191
}
41924192
}
41934193

4194-
impl<'a, Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>
4194+
impl<'a, Signer: Sign+Clone, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>
41954195
ReadableArgs<ChannelManagerReadArgs<'a, Signer, M, T, K, F, L>> for (BlockHash, ChannelManager<Signer, M, T, K, F, L>)
41964196
where M::Target: chain::Watch<Signer>,
41974197
T::Target: BroadcasterInterface,

0 commit comments

Comments
 (0)