From 4e56ae770e795fc59036b00ff6d0a96718801bd8 Mon Sep 17 00:00:00 2001 From: Andy Killorin <37423245+Speedy6451@users.noreply.github.com> Date: Sun, 24 Dec 2023 20:24:24 -0600 Subject: [PATCH] register turtles in scheduler when they make their first request --- server/src/main.rs | 6 +----- server/src/tasks.rs | 1 + server/src/turtle_api.rs | 2 ++ 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/server/src/main.rs b/server/src/main.rs index 16127a0..34dc7d5 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -156,11 +156,7 @@ async fn read_from_disk(kill: watch::Sender<()>) -> anyhow::Result { depots, }; - let mut live = LiveState::from_save(saved, scheduler, kill); - - for turtle in live.turtles.iter() { - live.tasks.add_turtle(&TurtleCommander::new(turtle.read().await.name,&live).await.unwrap()) - } + let live = LiveState::from_save(saved, scheduler, kill); Ok(live) } diff --git a/server/src/tasks.rs b/server/src/tasks.rs index ad43663..ddfad21 100644 --- a/server/src/tasks.rs +++ b/server/src/tasks.rs @@ -46,6 +46,7 @@ impl Scheduler { if self.turtles.iter().any(|(t,_)| t.name() == name ) { return; } + info!("registered {}", name.to_owned().to_str()); self.turtles.push(( turtle.clone(), None diff --git a/server/src/turtle_api.rs b/server/src/turtle_api.rs index 48ec7df..389e7ab 100644 --- a/server/src/turtle_api.rs +++ b/server/src/turtle_api.rs @@ -222,6 +222,7 @@ pub(crate) async fn command( ) -> Json { trace!("reply from turtle {id}: {req:?}"); let state_guard = state.clone().read_owned().await; + let turtle_commander = state_guard.get_turtle(id).await; if id as usize > state_guard.turtles.len() { return Json(turtle::TurtleCommand::Update); @@ -237,6 +238,7 @@ pub(crate) async fn command( if Instant::elapsed(&state.clone().read().await.started).as_secs_f64() > STARTUP_ALLOWANCE { let schedule = &mut state.write().await.tasks; trace!("idle, polling"); + schedule.add_turtle(&turtle_commander.unwrap()); schedule.poll().await; } });