summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2021-12-11 10:39:13 +0100
committerMatthias Beyer <mail@beyermatthias.de>2021-12-11 10:39:13 +0100
commit45cd97c4923b287715737ee6d3595e0c5177bf44 (patch)
treef3bb99ad71fc99617985a2e22181ef59d10b6856
parent395598e9c1360bd2f3182d927727934676e1c669 (diff)
Add impl for handling connect request
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r--lib/src/reactor/gossip/mod.rs16
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;