Initial commit.
[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, Arc<ErroringMessageHandler>, Arc<GossipRouter>, Arc<TestLogger>, Arc<IgnoringMessageHandler>>>;
12
13 pub(crate) enum GossipMessage {
14         ChannelAnnouncement(ChannelAnnouncement),
15         ChannelUpdate(ChannelUpdate),
16         InitialSyncComplete,
17 }
18
19 pub(crate) struct DetectedGossipMessage {
20         pub(crate) timestamp_seen: u32,
21         pub(crate) message: GossipMessage,
22 }
23
24 pub(crate) struct TestLogger {}
25
26 impl TestLogger {
27         pub(crate) fn new() -> TestLogger {
28                 Self {}
29         }
30 }
31
32 impl Logger for TestLogger {
33         fn log(&self, record: &Record) {
34                 // TODO: allow log level threshold to be set
35                 println!("{:<5} [{} : {}, {}] {}", record.level.to_string(), record.module_path, record.file, record.line, record.args);
36         }
37 }