Substantially reduce boilerplate and Arcs in download_gossip
[rapid-gossip-sync-server] / src / types.rs
1 use std::sync::Arc;
2
3 use lightning::ln::msgs::{ChannelAnnouncement, ChannelUpdate};
4 use lightning::ln::peer_handler::{ErroringMessageHandler, IgnoringMessageHandler, PeerManager};
5 use lightning::util::logger::{Logger, Record};
6
7 use crate::downloader::GossipRouter;
8 use crate::verifier::ChainVerifier;
9
10 pub(crate) type GossipChainAccess = Arc<ChainVerifier>;
11 pub(crate) type GossipPeerManager = Arc<PeerManager<lightning_net_tokio::SocketDescriptor, ErroringMessageHandler, Arc<GossipRouter>, Arc<TestLogger>, IgnoringMessageHandler>>;
12
13 #[derive(Debug)]
14 pub(crate) enum GossipMessage {
15         ChannelAnnouncement(ChannelAnnouncement),
16         ChannelUpdate(ChannelUpdate),
17         InitialSyncComplete,
18 }
19
20 pub(crate) struct TestLogger {}
21
22 impl TestLogger {
23         pub(crate) fn new() -> TestLogger {
24                 Self {}
25         }
26 }
27
28 impl Logger for TestLogger {
29         fn log(&self, record: &Record) {
30                 // TODO: allow log level threshold to be set
31                 println!("{:<5} [{} : {}, {}] {}", record.level.to_string(), record.module_path, record.file, record.line, record.args);
32         }
33 }