From 6a1bbe60ff356d02a8aa199d64f8521449515992 Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Mon, 19 Feb 2024 21:49:38 +0100 Subject: [PATCH] feat: Show first result latency --- src/main.rs | 11 +++++++++++ src/utils.rs | 6 ++++++ 2 files changed, 17 insertions(+) diff --git a/src/main.rs b/src/main.rs index f0dea84..693b56c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,6 +7,8 @@ use lazy_static::lazy_static; use reqwest::ClientBuilder; use rocket::response::content::{RawCss, RawHtml}; use rocket::response::stream::TextStream; +use rocket::time::Instant; +use utils::utils::Yieldable; use crate::helpers::helpers::run_search; use crate::static_files::static_files::read_file_contents; @@ -54,6 +56,8 @@ async fn hello<'a>(query: &str) -> RawHtml { let completed_ref_writer = completed_ref.clone(); let brave_ref = Arc::new(Mutex::new(Brave::new())); let brave_ref_writer = brave_ref.clone(); + let mut brave_first_result_has_yielded = false; + let brave_first_result_start = Instant::now(); let client = Arc::new(Box::new( ClientBuilder::new().user_agent(USER_AGENT).build().unwrap(), )); @@ -92,6 +96,13 @@ async fn hello<'a>(query: &str) -> RawHtml { } drop(completed); + if !brave_first_result_has_yielded { + let diff = brave_first_result_start.elapsed().whole_milliseconds(); + brave_first_result_has_yielded = true; + + yield format!("Time taken: {}ms", diff); + } + for ii in (current_index + 1)..len { let result = brave.results.get(ii).unwrap(); diff --git a/src/utils.rs b/src/utils.rs index 881ccf0..d4af4e0 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -323,4 +323,10 @@ pub mod utils { } ).to_string() } + + pub enum Yieldable { + AwaitingValue, + YieldRequired(T), + Completed(T), + } }