@@ -33,6 +33,7 @@ use crate::chain::channelmonitor::{ChannelMonitor, ChannelMonitorUpdate, Balance
3333use crate :: chain:: transaction:: { OutPoint , TransactionData } ;
3434use crate :: ln:: types:: ChannelId ;
3535use crate :: ln:: msgs:: { self , BaseMessageHandler , Init , MessageSendEvent } ;
36+ use crate :: ln:: our_peer_storage:: OurPeerStorage ;
3637use crate :: sign:: ecdsa:: EcdsaChannelSigner ;
3738use crate :: events:: { self , Event , EventHandler , ReplayEvent } ;
3839use crate :: util:: logger:: { Logger , WithContext } ;
@@ -258,6 +259,8 @@ pub struct ChainMonitor<ChannelSigner: EcdsaChannelSigner, C: Deref, T: Deref, F
258259 /// it to give to users (or [`MonitorEvent`]s for `ChannelManager` to process).
259260 event_notifier : Notifier ,
260261 pending_send_only_events : Mutex < Vec < MessageSendEvent > > ,
262+
263+ our_peerstorage_encryption_key : PeerStorageKey ,
261264}
262265
263266impl < ChannelSigner : EcdsaChannelSigner , C : Deref , T : Deref , F : Deref , L : Deref , P : Deref > ChainMonitor < ChannelSigner , C , T , F , L , P >
@@ -411,6 +414,7 @@ where C::Target: chain::Filter,
411414 highest_chain_height : AtomicUsize :: new ( 0 ) ,
412415 event_notifier : Notifier :: new ( ) ,
413416 pending_send_only_events : Mutex :: new ( Vec :: new ( ) ) ,
417+ our_peerstorage_encryption_key
414418 }
415419 }
416420
@@ -693,7 +697,12 @@ where C::Target: chain::Filter,
693697 }
694698
695699 fn send_peer_storage ( & self , their_node_id : PublicKey ) {
696- // TODO: Serialize `ChannelMonitor`s inside `our_peer_storage` and update [`OurPeerStorage::block_height`] accordingly.
700+ // TODO: Serialize `ChannelMonitor`s inside `our_peer_storage`.
701+
702+ let our_peer_storage = OurPeerStorage :: create_from_data ( self . our_peerstorage_encryption_key , Vec :: new ( ) ) ;
703+ log_debug ! ( self . logger, "Sending Peer Storage from chainmonitor" ) ;
704+ self . pending_send_only_events . lock ( ) . unwrap ( ) . push ( MessageSendEvent :: SendPeerStorage { node_id : their_node_id,
705+ msg : msgs:: PeerStorage { data : our_peer_storage. encrypted_data ( ) } } )
697706 }
698707}
699708
@@ -737,6 +746,12 @@ where
737746 monitor. block_connected (
738747 header, txdata, height, & * self . broadcaster , & * self . fee_estimator , & self . logger )
739748 } ) ;
749+
750+ // Send peer storage everytime a new block arrives.
751+ for node_id in self . get_peer_node_ids ( ) {
752+ self . send_peer_storage ( node_id) ;
753+ }
754+
740755 // Assume we may have some new events and wake the event processor
741756 self . event_notifier . notify ( ) ;
742757 }
@@ -788,6 +803,12 @@ where
788803 header, height, & * self . broadcaster , & * self . fee_estimator , & self . logger
789804 )
790805 } ) ;
806+
807+ // Send peer storage everytime a new block arrives.
808+ for node_id in self . get_peer_node_ids ( ) {
809+ self . send_peer_storage ( node_id) ;
810+ }
811+
791812 // Assume we may have some new events and wake the event processor
792813 self . event_notifier . notify ( ) ;
793814 }
0 commit comments