diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2021-12-11 10:39:13 +0100 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2021-12-11 10:39:13 +0100 |
commit | 45cd97c4923b287715737ee6d3595e0c5177bf44 (patch) | |
tree | f3bb99ad71fc99617985a2e22181ef59d10b6856 | |
parent | 395598e9c1360bd2f3182d927727934676e1c669 (diff) |
Add impl for handling connect request
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r-- | lib/src/reactor/gossip/mod.rs | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/lib/src/reactor/gossip/mod.rs b/lib/src/reactor/gossip/mod.rs index d84f985..809ccb0 100644 --- a/lib/src/reactor/gossip/mod.rs +++ b/lib/src/reactor/gossip/mod.rs @@ -65,7 +65,17 @@ impl GossipReactor { Ok(()) }, - Some((GossipRequest::PublishMe, reply_channel)) => self.publish_me(reply_channel).await + Some((GossipRequest::PublishMe, reply_channel)) => self.publish_me(reply_channel).await, + + Some((GossipRequest::Connect(addr), reply_channel)) => { + let reply = GossipReply::ConnectResult(self.connect(addr.clone()).await); + if let Err(_) = Self::send_gossip_reply(reply_channel, reply) { + anyhow::bail!("Failed sending Connect({}) reply", addr) + } + + Ok(()) + }, + } } @@ -103,6 +113,10 @@ impl GossipReactor { } } + async fn connect(&self, addr: ipfs::MultiaddrWithPeerId) -> Result<()> { + self.inner.profile().read().await.client().connect(addr).await + } + async fn handle_gossip_message(&self, msg: Arc<ipfs::PubsubMessage>) -> Result<()> { use std::convert::TryFrom; |