diff --git a/pulse-sdk/src/lib.rs b/pulse-sdk/src/lib.rs index afca266..ee5fe3e 100644 --- a/pulse-sdk/src/lib.rs +++ b/pulse-sdk/src/lib.rs @@ -5,13 +5,14 @@ pub use hypersdk; use tokio::io::{AsyncReadExt, AsyncWriteExt}; -use crate::strategy::StrategyEngineMessage; +use crate::{general::LogKind, strategy::StrategyEngineMessage}; pub mod prelude { pub use crate::general::*; pub use crate::server_path; pub use crate::strategy::*; pub use crate::terminal::*; + pub use crate::Strategy; pub use hypersdk; pub use postcard; @@ -63,6 +64,15 @@ pub trait Strategy { send_raw(&map_postcard_err(prelude::postcard::to_allocvec(msg))?).await } + async fn log(&self, kind: LogKind, name: &str, message: &str) -> tokio::io::Result<()> { + self.send(&prelude::StrategyMessage::Log(prelude::EventLog { + kind, + name: name.to_owned(), + message: message.to_owned(), + })) + .await + } + async fn on_raw(&self, data: &[u8]) -> tokio::io::Result<()> { match map_postcard_err(postcard::from_bytes(&data))? { StrategyEngineMessage::Initialize => self.initialize().await, diff --git a/pulse-sdk/src/terminal.rs b/pulse-sdk/src/terminal.rs index 67e5ac6..6d52182 100644 --- a/pulse-sdk/src/terminal.rs +++ b/pulse-sdk/src/terminal.rs @@ -15,7 +15,7 @@ pub enum TerminalServerMessage { PositionsUpdated(Vec), // Strategy - StrategyUpdated(Strategy), + StrategyUpdated(StrategyStatus), // Signals SignalsUpdated(Vec), @@ -80,7 +80,7 @@ pub enum ItemState { } #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] -pub struct Strategy { +pub struct StrategyStatus { pub strategy: StrategyManifest, pub mode: Mode, diff --git a/src/engine/engine/command.rs b/src/engine/engine/command.rs index 91c2c01..577ab31 100644 --- a/src/engine/engine/command.rs +++ b/src/engine/engine/command.rs @@ -1,6 +1,6 @@ use crate::{engine::Engine, store::config::Config}; -use pulse_sdk::terminal::{ItemState, Mode, Strategy}; +use pulse_sdk::terminal::{ItemState, Mode, StrategyStatus}; use toml::Value; impl Engine { @@ -74,7 +74,7 @@ impl Engine { self.config.lock().await.cooldown = cooldown; self.terminal_server.broadcast( - pulse_sdk::terminal::TerminalServerMessage::StrategyUpdated(Strategy { + pulse_sdk::terminal::TerminalServerMessage::StrategyUpdated(StrategyStatus { strategy: self.strategy_engine.strategy.lock().await.manifest.clone(), mode: Mode::Auto, diff --git a/src/engine/terminal.rs b/src/engine/terminal.rs index 5dcfe20..619d564 100644 --- a/src/engine/terminal.rs +++ b/src/engine/terminal.rs @@ -64,7 +64,7 @@ impl TerminalServer { self.send_to( id, - pulse_sdk::terminal::TerminalServerMessage::StrategyUpdated(Strategy { + pulse_sdk::terminal::TerminalServerMessage::StrategyUpdated(StrategyStatus { strategy: engine .strategy_engine .strategy diff --git a/src/terminal/formatting.rs b/src/terminal/formatting.rs index 80e7847..4e5c3db 100644 --- a/src/terminal/formatting.rs +++ b/src/terminal/formatting.rs @@ -206,7 +206,7 @@ impl Formatted for Vec { } } -impl Formatted for Strategy { +impl Formatted for StrategyStatus { fn get_formatted(&self) -> Vec { vec![ Triple( diff --git a/src/terminal/main.rs b/src/terminal/main.rs index e751356..070d064 100644 --- a/src/terminal/main.rs +++ b/src/terminal/main.rs @@ -29,7 +29,7 @@ pub struct PulseTradeApp { command: State, scroll: State>, - strategy: State>, + strategy: State>, status: State>, watch_list: State>, diff --git a/src/terminal/terminal.rs b/src/terminal/terminal.rs index 608d1b8..ccc646d 100644 --- a/src/terminal/terminal.rs +++ b/src/terminal/terminal.rs @@ -82,7 +82,7 @@ impl TerminalClient { active_positions: State>, logs: State>, signals: State>, - market_overview: State>, + market_overview: State>, status: State>, inspect: State, ) -> tokio::io::Result<()> {