- println!("send test data ({} bytes)", data.len());
- let request = H2Client::request_builder("localhost", "POST", "speedtest", None).unwrap();
- h2.send_request(request, Some(bytes::Bytes::from(data)))
- .and_then(move |response| async move {
- upload_queue
- .send(response)
- .await
- .map_err(Error::from)
- })
- })
- .then(move |result| async move {
- println!("RESULT {:?}", result);
- upload_result.await?.and(result)
- })
- .and_then(move |_| {
- let repeat = repeat2.load(Ordering::SeqCst);
- println!("Uploaded {} chunks in {} seconds.", repeat, start_time.elapsed().as_secs());
- let speed = ((item_len*1000000*(repeat as usize))/(1024*1024))/(start_time.elapsed().as_micros() as usize);
- if repeat > 0 {
- println!("Time per request: {} microseconds.", (start_time.elapsed().as_micros())/(repeat as u128));
- }
- futures::future::ok(speed)
- })
+ upload_queue.send(request_future).await?;
+ }
+
+ drop(upload_queue); // close queue
+
+ let _ = upload_result.await?;
+
+ println!("Uploaded {} chunks in {} seconds.", repeat, start_time.elapsed().as_secs());
+ let speed = ((item_len*1000000*(repeat as usize))/(1024*1024))/(start_time.elapsed().as_micros() as usize);
+ println!("Time per request: {} microseconds.", (start_time.elapsed().as_micros())/(repeat as u128));
+
+ Ok(speed)