@@ -14,21 +14,21 @@ use std::sync::{Arc, RwLock};
1414pub ( crate ) const PEER_INFO_PERSISTENCE_KEY : & str = "peers" ;
1515
1616pub ( crate ) struct PeerInfoStorage < K : KVStorePersister > {
17- peers : RwLock < PeerInfoStorageSerWrapper > ,
17+ peers : RwLock < Vec < PeerInfo > > ,
1818 persister : Arc < K > ,
1919}
2020
2121impl < K : KVStorePersister > PeerInfoStorage < K > {
2222 pub ( crate ) fn new ( persister : Arc < K > ) -> Self {
23- let peers = RwLock :: new ( PeerInfoStorageSerWrapper ( Vec :: new ( ) ) ) ;
23+ let peers = RwLock :: new ( Vec :: new ( ) ) ;
2424 Self { peers, persister }
2525 }
2626
2727 pub ( crate ) fn add_peer ( & self , peer_info : PeerInfo ) -> Result < ( ) , Error > {
2828 let mut locked_peers = self . peers . write ( ) . unwrap ( ) ;
2929
3030 // Check if we have the peer. If so, either update it or do nothing.
31- for stored_info in locked_peers. 0 . iter_mut ( ) {
31+ for stored_info in locked_peers. iter_mut ( ) {
3232 if stored_info. pubkey == peer_info. pubkey {
3333 if stored_info. address != peer_info. address {
3434 stored_info. address = peer_info. address ;
@@ -37,9 +37,9 @@ impl<K: KVStorePersister> PeerInfoStorage<K> {
3737 }
3838 }
3939
40- locked_peers. 0 . push ( peer_info) ;
40+ locked_peers. push ( peer_info) ;
4141 self . persister
42- . persist ( PEER_INFO_PERSISTENCE_KEY , & * locked_peers)
42+ . persist ( PEER_INFO_PERSISTENCE_KEY , & PeerInfoStorageSerWrapper ( & * locked_peers) )
4343 . map_err ( |_| Error :: PersistenceFailed ) ?;
4444
4545 Ok ( ( ) )
@@ -48,17 +48,17 @@ impl<K: KVStorePersister> PeerInfoStorage<K> {
4848 pub ( crate ) fn remove_peer ( & self , peer_pubkey : & PublicKey ) -> Result < ( ) , Error > {
4949 let mut locked_peers = self . peers . write ( ) . unwrap ( ) ;
5050
51- locked_peers. 0 . retain ( |info| info. pubkey != * peer_pubkey) ;
51+ locked_peers. retain ( |info| info. pubkey != * peer_pubkey) ;
5252
5353 self . persister
54- . persist ( PEER_INFO_PERSISTENCE_KEY , & * locked_peers)
54+ . persist ( PEER_INFO_PERSISTENCE_KEY , & PeerInfoStorageSerWrapper ( & * locked_peers) )
5555 . map_err ( |_| Error :: PersistenceFailed ) ?;
5656
5757 Ok ( ( ) )
5858 }
5959
6060 pub ( crate ) fn peers ( & self ) -> Vec < PeerInfo > {
61- self . peers . read ( ) . unwrap ( ) . 0 . clone ( )
61+ self . peers . read ( ) . unwrap ( ) . clone ( )
6262 }
6363}
6464
@@ -67,15 +67,16 @@ impl<K: KVStorePersister> ReadableArgs<Arc<K>> for PeerInfoStorage<K> {
6767 fn read < R : lightning:: io:: Read > (
6868 reader : & mut R , persister : Arc < K > ,
6969 ) -> Result < Self , lightning:: ln:: msgs:: DecodeError > {
70- let peers: RwLock < PeerInfoStorageSerWrapper > = RwLock :: new ( Readable :: read ( reader) ?) ;
70+ let read_peers: PeerInfoStorageDeserWrapper = Readable :: read ( reader) ?;
71+ let peers: RwLock < Vec < PeerInfo > > = RwLock :: new ( read_peers. 0 ) ;
7172 Ok ( Self { peers, persister } )
7273 }
7374}
7475
7576#[ derive( Clone , Debug , PartialEq , Eq ) ]
76- pub ( crate ) struct PeerInfoStorageSerWrapper ( Vec < PeerInfo > ) ;
77+ pub ( crate ) struct PeerInfoStorageDeserWrapper ( Vec < PeerInfo > ) ;
7778
78- impl Readable for PeerInfoStorageSerWrapper {
79+ impl Readable for PeerInfoStorageDeserWrapper {
7980 fn read < R : lightning:: io:: Read > (
8081 reader : & mut R ,
8182 ) -> Result < Self , lightning:: ln:: msgs:: DecodeError > {
@@ -84,11 +85,13 @@ impl Readable for PeerInfoStorageSerWrapper {
8485 for _ in 0 ..len {
8586 peers. push ( Readable :: read ( reader) ?) ;
8687 }
87- Ok ( PeerInfoStorageSerWrapper ( peers) )
88+ Ok ( Self ( peers) )
8889 }
8990}
9091
91- impl Writeable for PeerInfoStorageSerWrapper {
92+ pub ( crate ) struct PeerInfoStorageSerWrapper < ' a > ( & ' a Vec < PeerInfo > ) ;
93+
94+ impl Writeable for PeerInfoStorageSerWrapper < ' _ > {
9295 fn write < W : Writer > ( & self , writer : & mut W ) -> Result < ( ) , lightning:: io:: Error > {
9396 ( self . 0 . len ( ) as u16 ) . write ( writer) ?;
9497 for e in self . 0 . iter ( ) {
0 commit comments