4HTHYIA3GLMUBUMAI7CQMZA4KE47EUXOP24XLUEYFRMOG57CJLMAC 7Z3KZV6GY6IKLOWWRM6MVLOPAMP5MSJGQ3TVEZMMCSBVIP4NWRIQC H4AU6QRPRDRFW3V7NN5CJ6DHLEUBYGNLRZ5GYV6ULBGRMOPCJQXQC IBPVOKM5MXTGB2P7LCD75MISAYUNDPEKQAUEVCXJJWLWCX2TJZBAC X6YFD4WVMUYJCR5IYPJH6UKYVWSA7DKBRVJ6XQFXHOE2TRYUTAHAC SXEYMYF7P4RZMZ46WPL4IZUTSQ2ATBWYZX7QNVMS3SGOYXYOHAGQC C3L2TLQWREYOM3YHL37L7PS74YGLHBEDQRSCVMYIU6HKBEPNN2SAC 4XLHUME7YLJV6XUZBOW7PX62TCJXIWW2CPITXO5GZOULWGXRVDZAC DO2Y5TY5JQISUHCVNPI2FXO7WWZVJQ3LGPWF4DNADMGZRIO6PT2QC OIOMXESDNMLOTMNYCZZBYSBAQTYPAXXMUHTLA2AYCMNHZMPSLX2AC FBXYP7QM7SG6P2JDJVQPPCRKJE3GVYXNQ5GVV4GRDUNG6Q4ZRDJQC VBMXB443FGZL6DLT6KAP2ICFCCQNXCUMDEUL67HB4CNKFMBBNSSAC 5QTMRUXNE2XNJCMLN6MQN24UEZ55EFC3LIR4PO6OPNTT5KEL7WXQC IQ4FCHPZYGTZHCQHUIRCMUI5LCHIDSJCM2AZXGRJARWLCPPLXZOQC I52XSRUH5RVHQBFWVMAQPTUSPAJ4KNVID2RMI3UGCVKFLYUO6WZAC TKEVOH7HXON7SOBGXTUDHAHO2U2GPTQRNESP6ERKUQAS526OZIRAC HXEIH4UQ6EX3MAY33JK4WQUE5GUSZ673OX57JKNFXC2N2QLTXKXAC Q45QHPO4HDTEZF2W4UDZSYYQ46BPEIWSW4GJILZR5HTJNLKXJABQC BNPSVXIC72C3WT33YKCH766OBLLNCS7POX6U6JXZSQQPJF2M22MQC 2D7P2VKJASU7QDQZHGCLBIT6G2V5WUFYLWTCEVVEI2EZHGM6XYRAC WTZXEWY7IAXJAFNV7STCNQY2SNRDPHX3MKOEZ77NEJUN4MS2VYSQC while let Some(c) = hashes.recv().await {debug!("downloading {:?}", c);let t = std::mem::replace(&mut pool[cur],Some(tokio::spawn(download_change(self.client.clone(),self.url.clone(),self.headers.clone(),path.clone(),c,))),);if let Some(t) = t {
loop {if let Some(t) = pool[cur].take() {
cur = (cur + 1) % POOL_SIZE;}for f in 0..POOL_SIZE {if let Some(t) = pool[(cur + f) % POOL_SIZE].take() {let c = t.await??;debug!("sending {:?}", c);super::PROGRESS.borrow_mut().unwrap()[pro_n].incr();if send.send((c, true)).await.is_err() {debug!("err for {:?}", c);
if next == cur {if let Some(c) = hashes.recv().await {debug!("downloading on process {:?}: {:?}", cur, c);pool[cur] = Some(tokio::spawn(download_change(self.client.clone(),self.url.clone(),self.headers.clone(),path.clone(),c,)));cur = (cur + 1) % POOL_SIZE;} else {
debug!("sent");
} else {tokio::select! {c = hashes.recv() => {if let Some(c) = c {debug!("downloading on process {:?}: {:?}", cur, c);pool[cur] = Some(tokio::spawn(download_change(self.client.clone(),self.url.clone(),self.headers.clone(),path.clone(),c,)));cur = (cur + 1) % POOL_SIZE;} else {break;}}c = pool[next].as_mut().unwrap() => {pool[next] = None;let c = c??;super::PROGRESS.borrow_mut().unwrap()[pro_n].incr();if send.send((c, true)).await.is_err() {debug!("err for {:?}", c);break;}}}