11use super :: * ;
2- use crate :: WALLET_KEYS_SEED_LEN ;
2+ use crate :: { Error , WALLET_KEYS_SEED_LEN } ;
33
4+ use crate :: logger:: log_error;
45use crate :: peer_store:: PeerStore ;
56use crate :: { EventQueue , PaymentDetails } ;
67
@@ -9,7 +10,7 @@ use lightning::chain::keysinterface::{EntropySource, SignerProvider};
910use lightning:: routing:: gossip:: NetworkGraph ;
1011use lightning:: routing:: scoring:: { ProbabilisticScorer , ProbabilisticScoringParameters } ;
1112use lightning:: util:: logger:: Logger ;
12- use lightning:: util:: ser:: { Readable , ReadableArgs } ;
13+ use lightning:: util:: ser:: { Readable , ReadableArgs , Writeable } ;
1314
1415use bitcoin:: hash_types:: { BlockHash , Txid } ;
1516use bitcoin:: hashes:: hex:: FromHex ;
@@ -172,3 +173,60 @@ where
172173 }
173174 Ok ( res)
174175}
176+
177+ pub ( crate ) fn read_latest_node_ann_bcast_timestamp < K : Deref > (
178+ kv_store : K ,
179+ ) -> Result < u64 , std:: io:: Error >
180+ where
181+ K :: Target : KVStore ,
182+ {
183+ let mut reader = kv_store
184+ . read ( LATEST_NODE_ANN_BCAST_TIMSTAMP_NAMESPACE , LATEST_NODE_ANN_BCAST_TIMSTAMP_KEY ) ?;
185+ u64:: read ( & mut reader) . map_err ( |_| {
186+ std:: io:: Error :: new (
187+ std:: io:: ErrorKind :: InvalidData ,
188+ "Failed to deserialize latest node announcment broadcast timestamp" ,
189+ )
190+ } )
191+ }
192+
193+ pub ( crate ) fn write_latest_node_ann_bcast_timestamp < K : Deref , L : Deref > (
194+ updated_timestamp : u64 , kv_store : K , logger : L ,
195+ ) -> Result < ( ) , Error >
196+ where
197+ K :: Target : KVStore ,
198+ L :: Target : Logger ,
199+ {
200+ let mut writer = kv_store
201+ . write ( LATEST_NODE_ANN_BCAST_TIMSTAMP_NAMESPACE , NETWORK_GRAPH_PERSISTENCE_KEY )
202+ . map_err ( |e| {
203+ log_error ! (
204+ logger,
205+ "Getting writer for key {}/{} failed due to: {}" ,
206+ LATEST_NODE_ANN_BCAST_TIMSTAMP_NAMESPACE ,
207+ LATEST_NODE_ANN_BCAST_TIMSTAMP_KEY ,
208+ e
209+ ) ;
210+ Error :: PersistenceFailed
211+ } ) ?;
212+ updated_timestamp. write ( & mut writer) . map_err ( |e| {
213+ log_error ! (
214+ logger,
215+ "Writing data to key {}/{} failed due to: {}" ,
216+ LATEST_NODE_ANN_BCAST_TIMSTAMP_NAMESPACE ,
217+ LATEST_NODE_ANN_BCAST_TIMSTAMP_KEY ,
218+ e
219+ ) ;
220+ Error :: PersistenceFailed
221+ } ) ?;
222+ writer. commit ( ) . map_err ( |e| {
223+ log_error ! (
224+ logger,
225+ "Committing data to key {}/{} failed due to: {}" ,
226+ LATEST_NODE_ANN_BCAST_TIMSTAMP_NAMESPACE ,
227+ LATEST_NODE_ANN_BCAST_TIMSTAMP_KEY ,
228+ e
229+ ) ;
230+ Error :: PersistenceFailed
231+ } )
232+ }
0 commit comments