mirror of
https://github.com/darkrenaissance/darkfi.git
synced 2026-04-28 03:00:18 -04:00
net: add addr message subscription to seed protocol class
also add debug info to seed session
This commit is contained in:
@@ -7,7 +7,9 @@ use smol::Executor;
|
||||
use crate::Result;
|
||||
|
||||
use super::{
|
||||
super::{message, ChannelPtr, HostsPtr, P2pPtr, SettingsPtr},
|
||||
super::{
|
||||
message, message_subscriber::MessageSubscription, ChannelPtr, HostsPtr, P2pPtr, SettingsPtr,
|
||||
},
|
||||
ProtocolBase, ProtocolBasePtr,
|
||||
};
|
||||
|
||||
@@ -16,6 +18,7 @@ pub struct ProtocolSeed {
|
||||
channel: ChannelPtr,
|
||||
hosts: HostsPtr,
|
||||
settings: SettingsPtr,
|
||||
addr_sub: MessageSubscription<message::AddrsMessage>,
|
||||
}
|
||||
|
||||
impl ProtocolSeed {
|
||||
@@ -24,7 +27,14 @@ impl ProtocolSeed {
|
||||
let hosts = p2p.hosts();
|
||||
let settings = p2p.settings();
|
||||
|
||||
Arc::new(Self { channel, hosts, settings })
|
||||
//// Create a subscription to address message.
|
||||
let addr_sub = channel
|
||||
.clone()
|
||||
.subscribe_msg::<message::AddrsMessage>()
|
||||
.await
|
||||
.expect("Missing addr dispatcher!");
|
||||
|
||||
Arc::new(Self { channel, hosts, settings, addr_sub })
|
||||
}
|
||||
|
||||
/// Sends own external address over a channel. Imports own external address
|
||||
@@ -50,13 +60,6 @@ impl ProtocolBase for ProtocolSeed {
|
||||
/// message and receives an address message.
|
||||
async fn start(self: Arc<Self>, _executor: Arc<Executor<'_>>) -> Result<()> {
|
||||
debug!(target: "net", "ProtocolSeed::start() [START]");
|
||||
// Create a subscription to address message.
|
||||
let addr_sub = self
|
||||
.channel
|
||||
.clone()
|
||||
.subscribe_msg::<message::AddrsMessage>()
|
||||
.await
|
||||
.expect("Missing addrs dispatcher!");
|
||||
|
||||
// Send own address to the seed server.
|
||||
self.send_self_address().await?;
|
||||
@@ -66,7 +69,7 @@ impl ProtocolBase for ProtocolSeed {
|
||||
self.channel.clone().send(get_addr).await?;
|
||||
|
||||
// Receive addresses.
|
||||
let addrs_msg = addr_sub.receive().await?;
|
||||
let addrs_msg = self.addr_sub.receive().await?;
|
||||
debug!(target: "net", "ProtocolSeed::start() received {} addrs", addrs_msg.addrs.len());
|
||||
self.hosts.store(addrs_msg.addrs.clone()).await;
|
||||
|
||||
|
||||
@@ -105,16 +105,20 @@ impl SeedSession {
|
||||
|
||||
info!("Connected seed #{} [{}]", seed_index, seed);
|
||||
|
||||
self.clone().register_channel(channel.clone(), executor.clone()).await?;
|
||||
if let Err(err) =
|
||||
self.clone().register_channel(channel.clone(), executor.clone()).await
|
||||
{
|
||||
warn!("Failure during seed session #{} [{}]: {}", seed_index, seed, err);
|
||||
}
|
||||
|
||||
debug!("Disconnecting from seed #{} [{}]", seed_index, seed);
|
||||
info!("Disconnecting from seed #{} [{}]", seed_index, seed);
|
||||
channel.stop().await;
|
||||
|
||||
debug!(target: "net", "SeedSession::start_seed(i={}) [END]", seed_index);
|
||||
Ok(())
|
||||
}
|
||||
Err(err) => {
|
||||
info!("Failure contacting seed #{} [{}]: {}", seed_index, seed, err);
|
||||
warn!("Failure contacting seed #{} [{}]: {}", seed_index, seed, err);
|
||||
Err(err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user