1111use core:: ops:: Deref ;
1212use bitcoin:: hashes:: hex:: ToHex ;
1313use io:: { self } ;
14+ use routing:: scoring:: WriteableScore ;
1415
1516use crate :: { chain:: { keysinterface:: { Sign , KeysInterface } , self , transaction:: { OutPoint } , chaininterface:: { BroadcasterInterface , FeeEstimator } , chainmonitor:: { Persist , MonitorUpdateId } , channelmonitor:: { ChannelMonitor , ChannelMonitorUpdate } } , ln:: channelmanager:: ChannelManager , routing:: network_graph:: NetworkGraph } ;
1617use super :: { logger:: Logger , ser:: Writeable } ;
@@ -24,27 +25,32 @@ pub trait KVStorePersister {
2425 fn persist < W : Writeable > ( & self , key : & str , object : & W ) -> io:: Result < ( ) > ;
2526}
2627
27- /// Trait that handles persisting a [`ChannelManager`] and [`NetworkGraph `] to disk.
28- pub trait Persister < Signer : Sign , M : Deref , T : Deref , K : Deref , F : Deref , L : Deref >
28+ /// Trait that handles persisting a [`ChannelManager`], [`NetworkGraph`], and [`WriteableScore `] to disk.
29+ pub trait Persister < ' a , Signer : Sign , M : Deref , T : Deref , K : Deref , F : Deref , L : Deref , S : Deref >
2930 where M :: Target : ' static + chain:: Watch < Signer > ,
3031 T :: Target : ' static + BroadcasterInterface ,
3132 K :: Target : ' static + KeysInterface < Signer = Signer > ,
3233 F :: Target : ' static + FeeEstimator ,
3334 L :: Target : ' static + Logger ,
35+ S :: Target : ' static + WriteableScore < ' a > ,
3436{
3537 /// Persist the given ['ChannelManager'] to disk, returning an error if persistence failed.
3638 fn persist_manager ( & self , channel_manager : & ChannelManager < Signer , M , T , K , F , L > ) -> Result < ( ) , io:: Error > ;
3739
3840 /// Persist the given [`NetworkGraph`] to disk, returning an error if persistence failed.
3941 fn persist_graph ( & self , network_graph : & NetworkGraph ) -> Result < ( ) , io:: Error > ;
42+
43+ /// Persist the given [`WriteableScore`] to disk, returning an error if persistence failed.
44+ fn persist_scorer ( & self , scorer : & ' a S ) -> Result < ( ) , io:: Error > ;
4045}
4146
42- impl < A : KVStorePersister , Signer : Sign , M : Deref , T : Deref , K : Deref , F : Deref , L : Deref > Persister < Signer , M , T , K , F , L > for A
47+ impl < ' a , A : KVStorePersister , Signer : Sign , M : Deref , T : Deref , K : Deref , F : Deref , L : Deref , S : Deref > Persister < ' a , Signer , M , T , K , F , L , S > for A
4348 where M :: Target : ' static + chain:: Watch < Signer > ,
4449 T :: Target : ' static + BroadcasterInterface ,
4550 K :: Target : ' static + KeysInterface < Signer = Signer > ,
4651 F :: Target : ' static + FeeEstimator ,
4752 L :: Target : ' static + Logger ,
53+ S :: Target : ' static + WriteableScore < ' a > ,
4854{
4955 /// Persist the given ['ChannelManager'] to disk, returning an error if persistence failed.
5056 fn persist_manager ( & self , channel_manager : & ChannelManager < Signer , M , T , K , F , L > ) -> Result < ( ) , io:: Error > {
@@ -55,6 +61,11 @@ impl<A: KVStorePersister, Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref,
5561 fn persist_graph ( & self , network_graph : & NetworkGraph ) -> Result < ( ) , io:: Error > {
5662 self . persist ( "network_graph" , network_graph)
5763 }
64+
65+ /// Persist the given [`WriteableScore`] to disk, returning an error if persistence failed.
66+ fn persist_scorer ( & self , scorer : & ' a S ) -> Result < ( ) , io:: Error > {
67+ self . persist ( "scorer" , scorer)
68+ }
5869}
5970
6071impl < ChannelSigner : Sign , K : KVStorePersister > Persist < ChannelSigner > for K {
0 commit comments