diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2021-12-10 16:58:59 +0100 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2021-12-10 16:58:59 +0100 |
commit | e04c9d592567292f1701ff37e17ccc9181e96dc6 (patch) | |
tree | 32b4ea3f9792372e81b6fb9426b0f0eef30c31e7 /lib | |
parent | 3767ecd55bbfea76afc1ae80a0dc7911832a9aa1 (diff) |
Implement connecting to other peer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/src/reactor/mod.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/src/reactor/mod.rs b/lib/src/reactor/mod.rs index 9e22b1e..c35cecc 100644 --- a/lib/src/reactor/mod.rs +++ b/lib/src/reactor/mod.rs @@ -24,6 +24,8 @@ pub enum ReactorRequest<CustomRequest: Debug + Send + Sync> { /// Quit the reactor Exit, + Connect(ipfs::MultiaddrWithPeerId), + Custom(CustomRequest), } @@ -32,6 +34,8 @@ pub enum ReactorReply<CustomReply: Debug + Send + Sync> { Pong, Exiting, + ConnectResult((Result<()>, ipfs::MultiaddrWithPeerId)), + Custom(CustomReply), } @@ -107,6 +111,22 @@ impl<CustomReactorRequest, CustomReactorReply> Reactor<CustomReactorRequest, Cus Ok(None) }, + (ReactorRequest::Connect(addr), reply_channel) => { + match self.profile.read().await.client().connect(addr.clone()).await { + Ok(()) => if let Err(_) = reply_channel.send(ReactorReply::ConnectResult((Ok(()), addr.clone()))) { + anyhow::bail!("Failed sending ConnectResult({}, Ok(()))", addr) + } else { + Ok(None) + } + + Err(e) => if let Err(_) = reply_channel.send(ReactorReply::ConnectResult((Err(e), addr.clone()))) { + anyhow::bail!("Failed sending ConnectResult({}, Err(_))", addr) + } else { + Ok(None) + } + } + } + (ReactorRequest::Custom(c), reply_channel) => { Ok(Some((c, reply_channel))) } |