···1919use uuid::Uuid;
2020// model the chats table
21212222-// TODO: foreign types on foreign traits, lul
2222+// Foreign types on foreign traits, lul
2323// someday we can do this for traits sake
2424// https://dev.to/iprosk/generics-in-rust-murky-waters-of-implementing-foreign-traits-on-foreign-types-584n
2525
+13-7
tiles/src/core/network/mod.rs
···3030 get_did_from_public_key, get_public_key_from_did, get_random_bytes, get_random_bytes_32,
3131};
3232use tokio::{
3333- sync::{mpsc::Sender, oneshot},
3333+ sync::{
3434+ mpsc::{self, Sender},
3535+ oneshot::{self},
3636+ },
3437 task::spawn_blocking,
3538};
3639use uuid::Uuid;
···340343 store: MemStore,
341344 endpoint: Endpoint,
342345 sync_channel_sender: Sender<SyncOp>,
346346+ sync_main_sender: tokio::sync::mpsc::Sender<u8>,
343347) -> Result<()> {
344348 while let Some(event) = receiver.try_next().await? {
345349 info!(
···387391 .await?;
388392 }
389393 MessageBody::SyncEnd => {
390390- println!("Sync completed..., you can exit now");
394394+ println!("Sync completed..., exiting..");
395395+ sync_main_sender.send(0).await?;
391396 }
392397 msg_body => {
393398 info!("Invalid sync message {:?}", msg_body)
···427432 let mdns = address_lookup::mdns::MdnsAddressLookup::builder().build(endpoint.id())?;
428433 endpoint.address_lookup()?.add(mdns.clone());
429434 }
430430-435435+ let (sendx, mut recvx) = mpsc::channel(1);
431436 let tx = create_sync_channel();
432437 if let Some(receiver_did) = did {
433438 // INITIATOR BLOCK
···462467 store,
463468 endpoint.clone(),
464469 tx.clone(),
470470+ sendx.clone(),
465471 ));
466472467473 let receiver_last_row_counter = fetch_last_row_counter(&receiver_did, &tx).await?;
···479485 "\nSyncing in progress with ....{}({})",
480486 receiver_user.username, receiver_did
481487 );
482482- tokio::signal::ctrl_c().await?;
488488+ recvx.recv().await;
483489 recv_router.shutdown().await?;
484490 } else {
485491 // RECEIVER BLOCK
···506512 store,
507513 endpoint.clone(),
508514 tx.clone(),
515515+ sendx.clone(),
509516 ));
510517 println!("{}", "Ready to accept sync requests from peers...".blue());
511518···514521 // for the network to form correctly
515522 if cfg!(debug_assertions) {
516523 println!("Use this DID {} in dev for testing", did);
517517- }
518518- tokio::signal::ctrl_c().await?;
524524+ };
525525+ recvx.recv().await;
519526 recv_router.shutdown().await?;
520527 }
521528 endpoint.close().await;
···754761 delta: data.to_vec(),
755762 resp: sendx,
756763 };
757757-758764 sync_channel_sender.send(sync_op_msg).await?;
759765760766 recvx.await??;