mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-04-02 02:35:31 +00:00
ws: quit if any worker quits
This commit is contained in:
parent
d7e06468c3
commit
93f8995a72
6 changed files with 153 additions and 194 deletions
|
|
@ -13,7 +13,7 @@ use glommio::prelude::*;
|
|||
use glommio::timer::TimerActionRepeat;
|
||||
use rand::{rngs::SmallRng, SeedableRng};
|
||||
|
||||
use aquatic_common::{PanicSentinel, ServerStartInstant};
|
||||
use aquatic_common::ServerStartInstant;
|
||||
|
||||
use crate::common::*;
|
||||
use crate::config::Config;
|
||||
|
|
@ -21,9 +21,7 @@ use crate::SHARED_IN_CHANNEL_SIZE;
|
|||
|
||||
use self::storage::TorrentMaps;
|
||||
|
||||
#[allow(clippy::too_many_arguments)]
|
||||
pub async fn run_swarm_worker(
|
||||
_sentinel: PanicSentinel,
|
||||
config: Config,
|
||||
state: State,
|
||||
control_message_mesh_builder: MeshBuilder<SwarmControlMessage, Partial>,
|
||||
|
|
@ -31,14 +29,19 @@ pub async fn run_swarm_worker(
|
|||
out_message_mesh_builder: MeshBuilder<(OutMessageMeta, OutMessage), Partial>,
|
||||
server_start_instant: ServerStartInstant,
|
||||
worker_index: usize,
|
||||
) {
|
||||
) -> anyhow::Result<()> {
|
||||
let (_, mut control_message_receivers) = control_message_mesh_builder
|
||||
.join(Role::Consumer)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let (_, mut in_message_receivers) = in_message_mesh_builder.join(Role::Consumer).await.unwrap();
|
||||
let (out_message_senders, _) = out_message_mesh_builder.join(Role::Producer).await.unwrap();
|
||||
.map_err(|err| anyhow::anyhow!("join control message mesh: {:#}", err))?;
|
||||
let (_, mut in_message_receivers) = in_message_mesh_builder
|
||||
.join(Role::Consumer)
|
||||
.await
|
||||
.map_err(|err| anyhow::anyhow!("join in message mesh: {:#}", err))?;
|
||||
let (out_message_senders, _) = out_message_mesh_builder
|
||||
.join(Role::Producer)
|
||||
.await
|
||||
.map_err(|err| anyhow::anyhow!("join out message mesh: {:#}", err))?;
|
||||
|
||||
let out_message_senders = Rc::new(out_message_senders);
|
||||
|
||||
|
|
@ -89,6 +92,8 @@ pub async fn run_swarm_worker(
|
|||
for handle in handles {
|
||||
handle.await;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn handle_control_message_stream<S>(torrents: Rc<RefCell<TorrentMaps>>, mut stream: S)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue