Refactored engine

This commit is contained in:
2026-07-31 01:42:45 +02:00
parent b5a1a07cf0
commit f3e2deab09
5 changed files with 25 additions and 25 deletions
Vendored
BIN
View File
Binary file not shown.
+14 -2
View File
@@ -1,11 +1,11 @@
pub mod command; pub mod command;
pub mod execution; pub mod execution;
pub mod strategy; pub mod strategy;
pub mod terminal;
use crate::{ use crate::{
engine::strategy::StrategyEngine, engine::{strategy::StrategyEngine, terminal::TerminalServer},
store::{accounts::AccountList, config::Config}, store::{accounts::AccountList, config::Config},
terminal::TerminalServer,
}; };
use hypersdk::hypercore::ws::ConnectionStream; use hypersdk::hypercore::ws::ConnectionStream;
use pulse_sdk::prelude::*; use pulse_sdk::prelude::*;
@@ -56,4 +56,16 @@ impl Engine {
signals: Arc::new(Mutex::new(Vec::new())), 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?;
}
}
} }
-11
View File
@@ -57,14 +57,7 @@ impl StrategyEngine {
self.strategy.lock().await.send(msg).await self.strategy.lock().await.send(msg).await
} }
pub async fn spawn(self: &Arc<Self>) {
let engine = self.clone();
tokio::spawn(async move { engine.run().await });
}
pub async fn reload(self: &Arc<Self>, id: &str) -> tokio::io::Result<()> { pub async fn reload(self: &Arc<Self>, id: &str) -> tokio::io::Result<()> {
{
let strategy = pulse_strategy(id)?; let strategy = pulse_strategy(id)?;
let (child, manifest) = get_manifest( let (child, manifest) = get_manifest(
@@ -78,10 +71,6 @@ impl StrategyEngine {
strategy.child.kill().await?; strategy.child.kill().await?;
strategy.child = child; strategy.child = child;
strategy.manifest = manifest; strategy.manifest = manifest;
}
let engine = self.clone();
tokio::spawn(async move { engine.run().await });
Ok(()) Ok(())
} }
+1 -2
View File
@@ -1,7 +1,6 @@
pub mod engine; pub mod engine;
pub mod fetch; pub mod fetch;
pub mod store; pub mod store;
pub mod terminal;
#[tokio::main] #[tokio::main]
async fn main() -> anyhow::Result<()> { async fn main() -> anyhow::Result<()> {
@@ -10,7 +9,7 @@ async fn main() -> anyhow::Result<()> {
let server = engine.terminal_server.spawn_server().await; let server = engine.terminal_server.spawn_server().await;
let broadcaster = engine.terminal_server.spawn_broadcaster().await; let broadcaster = engine.terminal_server.spawn_broadcaster().await;
engine.strategy_engine.spawn().await; engine.run().await?;
server.await??; server.await??;
broadcaster.await??; broadcaster.await??;