mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-04-02 18:55:32 +00:00
aquatic_ws: support multiple request workers
This commit is contained in:
parent
cf0623e302
commit
875eb122c7
3 changed files with 24 additions and 9 deletions
|
|
@ -24,10 +24,21 @@ pub const APP_NAME: &str = "aquatic_ws: WebTorrent tracker";
|
|||
|
||||
|
||||
pub fn run(config: Config) -> anyhow::Result<()> {
|
||||
let opt_tls_acceptor = create_tls_acceptor(&config)?;
|
||||
|
||||
let state = State::default();
|
||||
|
||||
start_workers(config.clone(), state.clone())?;
|
||||
|
||||
loop {
|
||||
::std::thread::sleep(Duration::from_secs(config.cleaning.interval));
|
||||
|
||||
tasks::clean_torrents(&state);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
pub fn start_workers(config: Config, state: State) -> anyhow::Result<()> {
|
||||
let opt_tls_acceptor = create_tls_acceptor(&config)?;
|
||||
|
||||
let (in_message_sender, in_message_receiver) = ::crossbeam_channel::unbounded();
|
||||
|
||||
let mut out_message_senders = Vec::new();
|
||||
|
|
@ -98,11 +109,14 @@ pub fn run(config: Config) -> anyhow::Result<()> {
|
|||
|
||||
let out_message_sender = OutMessageSender::new(out_message_senders);
|
||||
|
||||
{
|
||||
for i in 0..config.request_workers {
|
||||
let config = config.clone();
|
||||
let state = state.clone();
|
||||
let in_message_receiver = in_message_receiver.clone();
|
||||
let out_message_sender = out_message_sender.clone();
|
||||
let wakers = wakers.clone();
|
||||
|
||||
Builder::new().name("request".to_string()).spawn(move || {
|
||||
Builder::new().name(format!("request-{:02}", i + 1)).spawn(move || {
|
||||
handler::run_request_worker(
|
||||
config,
|
||||
state,
|
||||
|
|
@ -113,11 +127,7 @@ pub fn run(config: Config) -> anyhow::Result<()> {
|
|||
})?;
|
||||
}
|
||||
|
||||
loop {
|
||||
::std::thread::sleep(Duration::from_secs(config.cleaning.interval));
|
||||
|
||||
tasks::clean_torrents(&state);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue