@@ -158,7 +158,7 @@ where
158
158
}
159
159
160
160
161
- impl < ' a , A : KVStore , CM : Deref , L : Deref , S : WriteableScore < ' a > > Persister < ' a , CM , L , S > for A
161
+ impl < ' a , A : KVStore + ? Sized , CM : Deref , L : Deref , S : WriteableScore < ' a > > Persister < ' a , CM , L , S > for A
162
162
where
163
163
CM :: Target : ' static + AChannelManager ,
164
164
L :: Target : ' static + Logger ,
@@ -185,65 +185,7 @@ where
185
185
}
186
186
}
187
187
188
- impl < ' a , CM : Deref , L : Deref , S : WriteableScore < ' a > > Persister < ' a , CM , L , S > for dyn KVStore + Send + Sync
189
- where
190
- CM :: Target : ' static + AChannelManager ,
191
- L :: Target : ' static + Logger ,
192
- {
193
- fn persist_manager ( & self , channel_manager : & CM ) -> Result < ( ) , io:: Error > {
194
- self . write ( CHANNEL_MANAGER_PERSISTENCE_PRIMARY_NAMESPACE ,
195
- CHANNEL_MANAGER_PERSISTENCE_SECONDARY_NAMESPACE ,
196
- CHANNEL_MANAGER_PERSISTENCE_KEY ,
197
- & channel_manager. get_cm ( ) . encode ( ) )
198
- }
199
-
200
- fn persist_graph ( & self , network_graph : & NetworkGraph < L > ) -> Result < ( ) , io:: Error > {
201
- self . write ( NETWORK_GRAPH_PERSISTENCE_PRIMARY_NAMESPACE ,
202
- NETWORK_GRAPH_PERSISTENCE_SECONDARY_NAMESPACE ,
203
- NETWORK_GRAPH_PERSISTENCE_KEY ,
204
- & network_graph. encode ( ) )
205
- }
206
-
207
- fn persist_scorer ( & self , scorer : & S ) -> Result < ( ) , io:: Error > {
208
- self . write ( SCORER_PERSISTENCE_PRIMARY_NAMESPACE ,
209
- SCORER_PERSISTENCE_SECONDARY_NAMESPACE ,
210
- SCORER_PERSISTENCE_KEY ,
211
- & scorer. encode ( ) )
212
- }
213
- }
214
-
215
- impl < ChannelSigner : WriteableEcdsaChannelSigner , K : KVStore > Persist < ChannelSigner > for K {
216
- // TODO: We really need a way for the persister to inform the user that its time to crash/shut
217
- // down once these start returning failure.
218
- // Then we should return InProgress rather than UnrecoverableError, implying we should probably
219
- // just shut down the node since we're not retrying persistence!
220
-
221
- fn persist_new_channel ( & self , funding_txo : OutPoint , monitor : & ChannelMonitor < ChannelSigner > , _update_id : MonitorUpdateId ) -> chain:: ChannelMonitorUpdateStatus {
222
- let key = format ! ( "{}_{}" , funding_txo. txid. to_string( ) , funding_txo. index) ;
223
- match self . write (
224
- CHANNEL_MONITOR_PERSISTENCE_PRIMARY_NAMESPACE ,
225
- CHANNEL_MONITOR_PERSISTENCE_SECONDARY_NAMESPACE ,
226
- & key, & monitor. encode ( ) )
227
- {
228
- Ok ( ( ) ) => chain:: ChannelMonitorUpdateStatus :: Completed ,
229
- Err ( _) => chain:: ChannelMonitorUpdateStatus :: UnrecoverableError
230
- }
231
- }
232
-
233
- fn update_persisted_channel ( & self , funding_txo : OutPoint , _update : Option < & ChannelMonitorUpdate > , monitor : & ChannelMonitor < ChannelSigner > , _update_id : MonitorUpdateId ) -> chain:: ChannelMonitorUpdateStatus {
234
- let key = format ! ( "{}_{}" , funding_txo. txid. to_string( ) , funding_txo. index) ;
235
- match self . write (
236
- CHANNEL_MONITOR_PERSISTENCE_PRIMARY_NAMESPACE ,
237
- CHANNEL_MONITOR_PERSISTENCE_SECONDARY_NAMESPACE ,
238
- & key, & monitor. encode ( ) )
239
- {
240
- Ok ( ( ) ) => chain:: ChannelMonitorUpdateStatus :: Completed ,
241
- Err ( _) => chain:: ChannelMonitorUpdateStatus :: UnrecoverableError
242
- }
243
- }
244
- }
245
-
246
- impl < ChannelSigner : WriteableEcdsaChannelSigner > Persist < ChannelSigner > for dyn KVStore + Send + Sync {
188
+ impl < ChannelSigner : WriteableEcdsaChannelSigner , K : KVStore + ?Sized > Persist < ChannelSigner > for K {
247
189
// TODO: We really need a way for the persister to inform the user that its time to crash/shut
248
190
// down once these start returning failure.
249
191
// Then we should return InProgress rather than UnrecoverableError, implying we should probably
@@ -901,6 +843,8 @@ mod tests {
901
843
use crate :: ln:: functional_test_utils:: * ;
902
844
use crate :: util:: test_utils:: { self , TestLogger , TestStore } ;
903
845
use crate :: { check_added_monitors, check_closed_broadcast} ;
846
+ use crate :: sync:: Arc ;
847
+ use crate :: util:: test_channel_signer:: TestChannelSigner ;
904
848
905
849
const EXPECTED_UPDATES_PER_PAYMENT : u64 = 5 ;
906
850
@@ -1241,4 +1185,14 @@ mod tests {
1241
1185
. read( CHANNEL_MONITOR_UPDATE_PERSISTENCE_PRIMARY_NAMESPACE , monitor_name. as_str( ) , UpdateName :: from( u64 :: MAX - 1 ) . as_str( ) )
1242
1186
. is_err( ) ) ;
1243
1187
}
1188
+
1189
+ fn persist_fn < P : Deref , ChannelSigner : WriteableEcdsaChannelSigner > ( _persist : P ) -> bool where P :: Target : Persist < ChannelSigner > {
1190
+ true
1191
+ }
1192
+
1193
+ #[ test]
1194
+ fn kvstore_trait_object_usage ( ) {
1195
+ let store: Arc < dyn KVStore + Send + Sync > = Arc :: new ( TestStore :: new ( false ) ) ;
1196
+ assert ! ( persist_fn:: <_, TestChannelSigner >( store. clone( ) ) ) ;
1197
+ }
1244
1198
}
0 commit comments