From 0196709a64e796ee8a562bdf7c1d4672c1f7d758 Mon Sep 17 00:00:00 2001 From: Joscha Date: Sat, 12 Aug 2023 21:09:18 +0200 Subject: [PATCH] Make RunInProgress fields private --- src/worker/run.rs | 32 ++++++++++++++++++++++++++------ src/worker/server.rs | 20 ++++---------------- 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/src/worker/run.rs b/src/worker/run.rs index 7bdd66d..b1d7463 100644 --- a/src/worker/run.rs +++ b/src/worker/run.rs @@ -7,7 +7,7 @@ use tokio::sync::Notify; use tracing::error; use crate::{ - shared::{BenchMethod, FinishedRun, Measurement, Run, Source}, + shared::{BenchMethod, FinishedRun, Measurement, Run, Source, UnfinishedRun}, somehow, }; @@ -16,13 +16,14 @@ struct Finished { measurements: HashMap, } -// TODO Make fields private +const SCROLLBACK: usize = 50; + #[derive(Clone)] pub struct RunInProgress { - pub server_name: String, - pub run: Run, - pub output: Arc>>, - pub abort: Arc, + server_name: String, + run: Run, + output: Arc>>, + abort: Arc, } impl RunInProgress { @@ -35,6 +36,25 @@ impl RunInProgress { } } + pub fn is_for_server(&self, name: &str) -> bool { + self.server_name == name + } + + pub fn as_unfinished_run(&self) -> UnfinishedRun { + let run = self.run.clone(); + let last_output = self + .output + .lock() + .unwrap() + .iter() + .rev() + .take(SCROLLBACK) + .rev() + .cloned() + .collect(); + UnfinishedRun { run, last_output } + } + pub fn log_stdout(&self, line: String) { self.output.lock().unwrap().push((Source::Stdout, line)); } diff --git a/src/worker/server.rs b/src/worker/server.rs index 4295f6a..ebed5a9 100644 --- a/src/worker/server.rs +++ b/src/worker/server.rs @@ -7,15 +7,13 @@ use tracing::{debug, warn}; use crate::{ config::{Config, WorkerServerConfig}, - shared::{FinishedRun, ServerResponse, UnfinishedRun, WorkerRequest, WorkerStatus}, + shared::{FinishedRun, ServerResponse, WorkerRequest, WorkerStatus}, somehow, worker::tree, }; use super::run::RunInProgress; -const SCROLLBACK: usize = 50; - #[derive(Clone)] pub struct Server { pub name: String, @@ -51,19 +49,9 @@ impl Server { let url = format!("{}api/worker/status", self.server_config.url); let status = match &*self.current_run.lock().unwrap() { - Some(run) if run.server_name == self.name => WorkerStatus::Working(UnfinishedRun { - run: run.run.clone(), - last_output: run - .output - .lock() - .unwrap() - .iter() - .rev() - .take(SCROLLBACK) - .rev() - .cloned() - .collect(), - }), + Some(run) if run.is_for_server(&self.name) => { + WorkerStatus::Working(run.as_unfinished_run()) + } Some(_) => WorkerStatus::Busy, None => WorkerStatus::Idle, };