From f3e2deab09e33acdb0249e6139d779b1fde5837a Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Fri, 31 Jul 2026 01:42:45 +0200 Subject: [PATCH] Refactored engine --- .DS_Store | Bin 0 -> 6148 bytes src/engine/engine/mod.rs | 16 ++++++++++++-- src/engine/engine/strategy.rs | 31 +++++++++------------------- src/engine/{ => engine}/terminal.rs | 0 src/engine/main.rs | 3 +-- 5 files changed, 25 insertions(+), 25 deletions(-) create mode 100644 .DS_Store rename src/engine/{ => engine}/terminal.rs (100%) diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..fe578e82f53320d6bd0bf92699ea4c032cc3ed2f GIT binary patch literal 6148 zcmeHKJ4*vW5T4DQay|%GSXiDSb_!{1J;Mo>LK@4M2T_u6rzUoRE9?Xk?ib>bS%d1v>-N}>3; zVf!0n{mGv3ZD>DXDojBFedxduG+_n%2DB{(uo&e>nOw?Sr^)rKY^9@$D{ATUj!C=Bs&&ijV(Or2tc!0bZgNM7c zEU%lco$cooz&)GHn^DL;E5Hh{0-p-d_aVSW7-~!v%1;M&@(6(F;^e zh3G*ODiu+s3Vp;7Djnwo9T#d$6{>U)vNEotD+_%>5wbeY2QnN)sE~VBfEBP6aMVwq z_W#ZA&;NE3|6&DLfq$idaHC38#!J$BYv$r;uMMzOv5`?+s!*n2r?+D{psjcwn>6$V XG(ZeBrV4QejsFNp8MtEwepP`FQr)L| literal 0 HcmV?d00001 diff --git a/src/engine/engine/mod.rs b/src/engine/engine/mod.rs index d0d6f5c..045b85d 100644 --- a/src/engine/engine/mod.rs +++ b/src/engine/engine/mod.rs @@ -1,11 +1,11 @@ pub mod command; pub mod execution; pub mod strategy; +pub mod terminal; use crate::{ - engine::strategy::StrategyEngine, + engine::{strategy::StrategyEngine, terminal::TerminalServer}, store::{accounts::AccountList, config::Config}, - terminal::TerminalServer, }; use hypersdk::hypercore::ws::ConnectionStream; use pulse_sdk::prelude::*; @@ -56,4 +56,16 @@ impl Engine { signals: Arc::new(Mutex::new(Vec::new())), })) } + + /// Starts the main strategy server + /// When a strategy is reloaded it restarts automatically + pub async fn run(&self) -> anyhow::Result<()> { + loop { + self.strategy_engine.run().await?; + + self.terminal_server + .info("engine::main", "Strategy stopped, restarting") + .await?; + } + } } diff --git a/src/engine/engine/strategy.rs b/src/engine/engine/strategy.rs index 90da13c..b5fb0cf 100644 --- a/src/engine/engine/strategy.rs +++ b/src/engine/engine/strategy.rs @@ -57,31 +57,20 @@ impl StrategyEngine { self.strategy.lock().await.send(msg).await } - pub async fn spawn(self: &Arc) { - let engine = self.clone(); - - tokio::spawn(async move { engine.run().await }); - } - pub async fn reload(self: &Arc, id: &str) -> tokio::io::Result<()> { - { - let strategy = pulse_strategy(id)?; + let strategy = pulse_strategy(id)?; - let (child, manifest) = get_manifest( - &strategy, - &strategy.join("strategy.bash"), - &fs::read(strategy.join("strategy.toml")).await?, - )?; + let (child, manifest) = get_manifest( + &strategy, + &strategy.join("strategy.bash"), + &fs::read(strategy.join("strategy.toml")).await?, + )?; - let mut strategy = self.strategy.lock().await; + let mut strategy = self.strategy.lock().await; - strategy.child.kill().await?; - strategy.child = child; - strategy.manifest = manifest; - } - - let engine = self.clone(); - tokio::spawn(async move { engine.run().await }); + strategy.child.kill().await?; + strategy.child = child; + strategy.manifest = manifest; Ok(()) } diff --git a/src/engine/terminal.rs b/src/engine/engine/terminal.rs similarity index 100% rename from src/engine/terminal.rs rename to src/engine/engine/terminal.rs diff --git a/src/engine/main.rs b/src/engine/main.rs index af859e4..c9d3244 100644 --- a/src/engine/main.rs +++ b/src/engine/main.rs @@ -1,7 +1,6 @@ pub mod engine; pub mod fetch; pub mod store; -pub mod terminal; #[tokio::main] async fn main() -> anyhow::Result<()> { @@ -10,7 +9,7 @@ async fn main() -> anyhow::Result<()> { let server = engine.terminal_server.spawn_server().await; let broadcaster = engine.terminal_server.spawn_broadcaster().await; - engine.strategy_engine.spawn().await; + engine.run().await?; server.await??; broadcaster.await??;