From 11e29e5fb9af539d2e9c3899a0c3e416aa06852b Mon Sep 17 00:00:00 2001 From: Andrey Platov Date: Wed, 8 Jan 2025 23:08:41 +0100 Subject: [PATCH] checkpoint Signed-off-by: Andrey Platov --- huly-cli/src/main.rs | 10 ++++++++-- huly/src/client.rs | 17 ++++++++++++++++- huly/src/membership.rs | 7 +++++-- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/huly-cli/src/main.rs b/huly-cli/src/main.rs index 5ee18ac..e57dd72 100644 --- a/huly-cli/src/main.rs +++ b/huly-cli/src/main.rs @@ -114,8 +114,14 @@ async fn main() -> Result<()> { Command::Client { server, account } => { let account: AccId = account.parse()?; let org: OrgId = server.parse()?; - huly::client::request_membership(&secret_key.clone(), endpoint.clone(), account, org) - .await?; + huly::client::request_membership( + &secret_key.clone(), + endpoint.clone(), + account, + org, + gossip, + ) + .await?; } Command::CreateDb => { let _ = Db::create(&args.db)?; diff --git a/huly/src/client.rs b/huly/src/client.rs index 14d4deb..2c6782b 100644 --- a/huly/src/client.rs +++ b/huly/src/client.rs @@ -7,13 +7,18 @@ use crate::membership::{ use crate::message::{Message, SignedMessage, SignedMessageType}; use anyhow::Result; use iroh::{Endpoint, NodeId, SecretKey}; -use tokio::io::AsyncWriteExt; +use iroh_gossip::net::GossipSender; +use iroh_gossip::{ + net::{Event, Gossip, GossipEvent, GossipReceiver}, + proto::TopicId, +}; pub async fn request_membership( secret_key: &SecretKey, endpoint: Endpoint, account: AccId, org: OrgId, + gossip: Gossip, ) -> Result<()> { let node_id = NodeId::from_bytes(org.as_bytes())?; let conn = endpoint.connect(node_id, Membership::ALPN).await?; @@ -30,6 +35,16 @@ pub async fn request_membership( let response = Message::read_async(&mut recv).await?; println!("got membership response: {:?}", response); + let topic = TopicId::from_bytes(account.into()); + // let gossip = Gossip::builder().spawn(endpoint.clone()).await?; + + let (sender, receiver) = gossip + .subscribe_and_join(topic, vec![node_id]) + .await? + .split(); + + println!("started gossip proto"); + let request = ServeMeRequestType::encode(&Empty {})?; request.write_async(&mut send).await?; println!("sent serve me request"); diff --git a/huly/src/membership.rs b/huly/src/membership.rs index faac162..5cef150 100644 --- a/huly/src/membership.rs +++ b/huly/src/membership.rs @@ -119,8 +119,11 @@ impl ProtocolHandler for Membership { let topic = TopicId::from_bytes(account_id.into()); println!("subscribing"); - let (sender, receiver) = - this.gossip.subscribe_and_join(topic, vec![]).await?.split(); + let (sender, receiver) = this + .gossip + .subscribe_and_join(topic, vec![device_id]) + .await? + .split(); println!("spawning account loop"); let x = tokio::spawn(account_loop(sender, receiver));