@@ -242,6 +242,131 @@ pub trait GossipMessageStore {
242
242
fn delete_channel_timestamps ( & self , outpoint : & OutPoint ) ;
243
243
}
244
244
245
+ /// Used for delegating the store trait
246
+ pub trait GossipMessageStoreDeref {
247
+ type Target : GossipMessageStore ;
248
+ fn gossip_message_store_deref ( & self ) -> & Self :: Target ;
249
+ }
250
+
251
+ impl < T : GossipMessageStoreDeref > GossipMessageStore for T {
252
+ fn get_broadcast_messages_iter (
253
+ & self ,
254
+ after_cursor : & Cursor ,
255
+ ) -> impl IntoIterator < Item = BroadcastMessageWithTimestamp > {
256
+ self . gossip_message_store_deref ( )
257
+ . get_broadcast_messages_iter ( after_cursor)
258
+ }
259
+
260
+ fn get_broadcast_messages (
261
+ & self ,
262
+ after_cursor : & Cursor ,
263
+ count : Option < u16 > ,
264
+ ) -> Vec < BroadcastMessageWithTimestamp > {
265
+ self . gossip_message_store_deref ( )
266
+ . get_broadcast_messages ( after_cursor, count)
267
+ }
268
+
269
+ fn query_broadcast_messages < I : IntoIterator < Item = BroadcastMessageQuery > > (
270
+ & self ,
271
+ queries : I ,
272
+ ) -> ( Vec < BroadcastMessageWithTimestamp > , Vec < u16 > ) {
273
+ self . gossip_message_store_deref ( )
274
+ . query_broadcast_messages ( queries)
275
+ }
276
+
277
+ fn query_broadcast_message (
278
+ & self ,
279
+ query : BroadcastMessageQuery ,
280
+ ) -> Option < BroadcastMessageWithTimestamp > {
281
+ self . gossip_message_store_deref ( )
282
+ . query_broadcast_message ( query)
283
+ }
284
+
285
+ fn get_broadcast_message_with_cursor (
286
+ & self ,
287
+ cursor : & Cursor ,
288
+ ) -> Option < BroadcastMessageWithTimestamp > {
289
+ self . gossip_message_store_deref ( )
290
+ . get_broadcast_message_with_cursor ( cursor)
291
+ }
292
+
293
+ fn get_latest_broadcast_message_cursor ( & self ) -> Option < Cursor > {
294
+ self . gossip_message_store_deref ( )
295
+ . get_latest_broadcast_message_cursor ( )
296
+ }
297
+
298
+ fn get_latest_channel_announcement_timestamp ( & self , outpoint : & OutPoint ) -> Option < u64 > {
299
+ self . gossip_message_store_deref ( )
300
+ . get_latest_channel_announcement_timestamp ( outpoint)
301
+ }
302
+
303
+ fn get_latest_channel_update_timestamp (
304
+ & self ,
305
+ outpoint : & OutPoint ,
306
+ is_node1 : bool ,
307
+ ) -> Option < u64 > {
308
+ self . gossip_message_store_deref ( )
309
+ . get_latest_channel_update_timestamp ( outpoint, is_node1)
310
+ }
311
+
312
+ fn get_latest_node_announcement_timestamp ( & self , pk : & Pubkey ) -> Option < u64 > {
313
+ self . gossip_message_store_deref ( )
314
+ . get_latest_node_announcement_timestamp ( pk)
315
+ }
316
+
317
+ fn get_latest_channel_announcement (
318
+ & self ,
319
+ outpoint : & OutPoint ,
320
+ ) -> Option < ( u64 , ChannelAnnouncement ) > {
321
+ self . gossip_message_store_deref ( )
322
+ . get_latest_channel_announcement ( outpoint)
323
+ }
324
+
325
+ fn get_latest_channel_update (
326
+ & self ,
327
+ outpoint : & OutPoint ,
328
+ is_node1 : bool ,
329
+ ) -> Option < ChannelUpdate > {
330
+ self . gossip_message_store_deref ( )
331
+ . get_latest_channel_update ( outpoint, is_node1)
332
+ }
333
+
334
+ fn get_latest_node_announcement ( & self , pk : & Pubkey ) -> Option < NodeAnnouncement > {
335
+ self . gossip_message_store_deref ( )
336
+ . get_latest_node_announcement ( pk)
337
+ }
338
+
339
+ fn delete_broadcast_message ( & self , cursor : & Cursor ) {
340
+ self . gossip_message_store_deref ( )
341
+ . delete_broadcast_message ( cursor) ;
342
+ }
343
+
344
+ fn save_channel_announcement ( & self , timestamp : u64 , channel_announcement : ChannelAnnouncement ) {
345
+ self . gossip_message_store_deref ( )
346
+ . save_channel_announcement ( timestamp, channel_announcement) ;
347
+ }
348
+
349
+ fn save_channel_update ( & self , channel_update : ChannelUpdate ) {
350
+ self . gossip_message_store_deref ( )
351
+ . save_channel_update ( channel_update)
352
+ }
353
+
354
+ fn save_node_announcement ( & self , node_announcement : NodeAnnouncement ) {
355
+ self . gossip_message_store_deref ( )
356
+ . save_node_announcement ( node_announcement) ;
357
+ }
358
+
359
+ fn get_channel_timestamps_iter ( & self ) -> impl IntoIterator < Item = ( OutPoint , [ u64 ; 3 ] ) > {
360
+ self . gossip_message_store_deref ( )
361
+ . get_channel_timestamps_iter ( )
362
+ }
363
+
364
+ fn delete_channel_timestamps ( & self , outpoint : & OutPoint ) {
365
+ self . gossip_message_store_deref ( )
366
+ . delete_channel_timestamps ( outpoint) ;
367
+ }
368
+ }
369
+
245
370
// A batch of gossip messages has been added to the store since the last time
246
371
// we pulled new messages/messages are pushed to us.
247
372
#[ derive( Clone , Debug ) ]
0 commit comments