|
1 | 1 | use super::*;
|
2 | 2 | use crate::WALLET_KEYS_SEED_LEN;
|
3 | 3 |
|
| 4 | +use crate::logger::log_error; |
4 | 5 | use crate::peer_store::PeerStore;
|
5 |
| -use crate::{EventQueue, PaymentDetails}; |
| 6 | +use crate::{Error, EventQueue, PaymentDetails}; |
6 | 7 |
|
7 | 8 | use lightning::chain::channelmonitor::ChannelMonitor;
|
8 | 9 | use lightning::chain::keysinterface::{EntropySource, SignerProvider};
|
9 | 10 | use lightning::routing::gossip::NetworkGraph;
|
10 | 11 | use lightning::routing::scoring::{ProbabilisticScorer, ProbabilisticScoringParameters};
|
11 | 12 | use lightning::util::logger::Logger;
|
12 |
| -use lightning::util::ser::{Readable, ReadableArgs}; |
| 13 | +use lightning::util::ser::{Readable, ReadableArgs, Writeable}; |
13 | 14 |
|
14 | 15 | use bitcoin::hash_types::{BlockHash, Txid};
|
15 | 16 | use bitcoin::hashes::hex::FromHex;
|
@@ -172,3 +173,58 @@ where
|
172 | 173 | }
|
173 | 174 | Ok(res)
|
174 | 175 | }
|
| 176 | + |
| 177 | +pub(crate) fn read_rgs_latest_sync_timestamp<K: Deref>(kv_store: K) -> Result<u32, std::io::Error> |
| 178 | +where |
| 179 | + K::Target: KVStore, |
| 180 | +{ |
| 181 | + let mut reader = |
| 182 | + kv_store.read(RGS_LATEST_SYNC_TIMESTAMP_NAMESPACE, RGS_LATEST_SYNC_TIMESTAMP_KEY)?; |
| 183 | + u32::read(&mut reader).map_err(|_| { |
| 184 | + std::io::Error::new( |
| 185 | + std::io::ErrorKind::InvalidData, |
| 186 | + "Failed to deserialize latest RGS sync timestamp", |
| 187 | + ) |
| 188 | + }) |
| 189 | +} |
| 190 | + |
| 191 | +pub(crate) fn write_rgs_latest_sync_timestamp<K: Deref, L: Deref>( |
| 192 | + updated_timestamp: u32, kv_store: K, logger: L, |
| 193 | +) -> Result<(), Error> |
| 194 | +where |
| 195 | + K::Target: KVStore, |
| 196 | + L::Target: Logger, |
| 197 | +{ |
| 198 | + let mut writer = kv_store |
| 199 | + .write(RGS_LATEST_SYNC_TIMESTAMP_NAMESPACE, RGS_LATEST_SYNC_TIMESTAMP_KEY) |
| 200 | + .map_err(|e| { |
| 201 | + log_error!( |
| 202 | + logger, |
| 203 | + "Getting writer for key {}/{} failed due to: {}", |
| 204 | + RGS_LATEST_SYNC_TIMESTAMP_NAMESPACE, |
| 205 | + RGS_LATEST_SYNC_TIMESTAMP_KEY, |
| 206 | + e |
| 207 | + ); |
| 208 | + Error::PersistenceFailed |
| 209 | + })?; |
| 210 | + updated_timestamp.write(&mut writer).map_err(|e| { |
| 211 | + log_error!( |
| 212 | + logger, |
| 213 | + "Writing peer data to key {}/{} failed due to: {}", |
| 214 | + RGS_LATEST_SYNC_TIMESTAMP_NAMESPACE, |
| 215 | + RGS_LATEST_SYNC_TIMESTAMP_KEY, |
| 216 | + e |
| 217 | + ); |
| 218 | + Error::PersistenceFailed |
| 219 | + })?; |
| 220 | + writer.commit().map_err(|e| { |
| 221 | + log_error!( |
| 222 | + logger, |
| 223 | + "Committing peer data to key {}/{} failed due to: {}", |
| 224 | + RGS_LATEST_SYNC_TIMESTAMP_NAMESPACE, |
| 225 | + RGS_LATEST_SYNC_TIMESTAMP_KEY, |
| 226 | + e |
| 227 | + ); |
| 228 | + Error::PersistenceFailed |
| 229 | + }) |
| 230 | +} |
0 commit comments