|
10 | 10 | //! Types and utils for persistence. |
11 | 11 |
|
12 | 12 | use crate::events::{EventQueueDeserWrapper, LiquidityEvent}; |
| 13 | +#[cfg(lsps1_service)] |
| 14 | +use crate::lsps1::peer_state::PeerState as LSPS1ServicePeerState; |
13 | 15 | use crate::lsps2::service::PeerState as LSPS2ServicePeerState; |
14 | 16 | use crate::lsps5::service::PeerState as LSPS5ServicePeerState; |
15 | 17 | use crate::prelude::{new_hash_map, HashMap}; |
|
90 | 92 | Ok(Some(queue.0)) |
91 | 93 | } |
92 | 94 |
|
| 95 | +#[cfg(lsps1_service)] |
| 96 | +pub(crate) async fn read_lsps1_service_peer_states<K: Deref>( |
| 97 | + kv_store: K, |
| 98 | +) -> Result<HashMap<PublicKey, Mutex<LSPS1ServicePeerState>>, lightning::io::Error> |
| 99 | +where |
| 100 | + K::Target: KVStore, |
| 101 | +{ |
| 102 | + let mut res = new_hash_map(); |
| 103 | + |
| 104 | + for stored_key in kv_store |
| 105 | + .list( |
| 106 | + LIQUIDITY_MANAGER_PERSISTENCE_PRIMARY_NAMESPACE, |
| 107 | + LSPS1_SERVICE_PERSISTENCE_SECONDARY_NAMESPACE, |
| 108 | + ) |
| 109 | + .await? |
| 110 | + { |
| 111 | + let mut reader = Cursor::new( |
| 112 | + kv_store |
| 113 | + .read( |
| 114 | + LIQUIDITY_MANAGER_PERSISTENCE_PRIMARY_NAMESPACE, |
| 115 | + LSPS1_SERVICE_PERSISTENCE_SECONDARY_NAMESPACE, |
| 116 | + &stored_key, |
| 117 | + ) |
| 118 | + .await?, |
| 119 | + ); |
| 120 | + |
| 121 | + let peer_state = LSPS1ServicePeerState::read(&mut reader).map_err(|_| { |
| 122 | + lightning::io::Error::new( |
| 123 | + lightning::io::ErrorKind::InvalidData, |
| 124 | + "Failed to deserialize LSPS1 peer state", |
| 125 | + ) |
| 126 | + })?; |
| 127 | + |
| 128 | + let key = PublicKey::from_str(&stored_key).map_err(|_| { |
| 129 | + lightning::io::Error::new( |
| 130 | + lightning::io::ErrorKind::InvalidData, |
| 131 | + "Failed to deserialize stored key entry", |
| 132 | + ) |
| 133 | + })?; |
| 134 | + |
| 135 | + res.insert(key, Mutex::new(peer_state)); |
| 136 | + } |
| 137 | + Ok(res) |
| 138 | +} |
| 139 | + |
93 | 140 | pub(crate) async fn read_lsps2_service_peer_states<K: Deref>( |
94 | 141 | kv_store: K, |
95 | 142 | ) -> Result<HashMap<PublicKey, Mutex<LSPS2ServicePeerState>>, lightning::io::Error> |
|
0 commit comments