From 39735bad87ec69e1cc961e9cddbbb1c877196d94 Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Wed, 22 Jul 2026 18:08:16 +0200 Subject: [PATCH] Pulse wire crate --- Cargo.lock | 9 +++++- Cargo.toml | 9 ++++-- pulse-wire/Cargo.toml | 7 +++++ src/pc.rs => pulse-wire/src/lib.rs | 24 ++------------- src/ptc.rs => pulse-wire/src/terminal.rs | 1 + src/daemon/main.rs | 10 +++---- src/daemon/ptc.rs | 2 -- src/terminal/command.rs | 6 ++-- src/terminal/formatting.rs | 2 +- src/terminal/main.rs | 37 +++++++++++------------- src/terminal/ptc.rs | 2 -- 11 files changed, 49 insertions(+), 60 deletions(-) create mode 100644 pulse-wire/Cargo.toml rename src/pc.rs => pulse-wire/src/lib.rs (77%) rename src/ptc.rs => pulse-wire/src/terminal.rs (99%) delete mode 100644 src/daemon/ptc.rs delete mode 100644 src/terminal/ptc.rs diff --git a/Cargo.lock b/Cargo.lock index 1f87829..9019c07 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -319,8 +319,8 @@ version = "0.1.0-alpha.0" dependencies = [ "chrono", "crossterm", - "pulse-macros", "pulse-ui", + "pulse-wire", "tokio", ] @@ -332,6 +332,13 @@ dependencies = [ "tokio", ] +[[package]] +name = "pulse-wire" +version = "0.1.0-alpha.0" +dependencies = [ + "pulse-macros", +] + [[package]] name = "quote" version = "1.0.46" diff --git a/Cargo.toml b/Cargo.toml index 572e0f1..651f439 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,18 +4,21 @@ version = "0.1.0-alpha.0" edition = "2024" [dependencies] -chrono = "0.4.45" pulse-ui = { workspace = true } -pulse-macros = { workspace = true } +pulse-wire = { workspace = true } + +chrono = "0.4.45" tokio = { workspace = true, features = ["rt-multi-thread", "macros"] } crossterm = { workspace = true } [workspace] -members = ["pulse-macros", "pulse-ui"] +members = ["pulse-macros", "pulse-ui", "pulse-wire"] [workspace.dependencies] pulse-macros = { path = "pulse-macros", version = "0.1.0-alpha.0" } pulse-ui = { path = "pulse-ui", version = "0.1.0-alpha.0" } +pulse-wire = { path = "pulse-wire", version = "0.1.0-alpha.0" } + tokio = "1.52.3" crossterm = "0.29.0" diff --git a/pulse-wire/Cargo.toml b/pulse-wire/Cargo.toml new file mode 100644 index 0000000..449b94f --- /dev/null +++ b/pulse-wire/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "pulse-wire" +version = "0.1.0-alpha.0" +edition = "2024" + +[dependencies] +pulse-macros = { workspace = true } diff --git a/src/pc.rs b/pulse-wire/src/lib.rs similarity index 77% rename from src/pc.rs rename to pulse-wire/src/lib.rs index 8c5cb31..a4c1292 100644 --- a/src/pc.rs +++ b/pulse-wire/src/lib.rs @@ -1,3 +1,5 @@ +pub mod terminal; + pub trait PulseCom { fn to_com(&self) -> Vec; fn from_com(_com: &mut Vec) -> Self; @@ -81,25 +83,3 @@ int_com!(usize); int_com!(f64); int_com!(f32); - -#[macro_export] -macro_rules! p_com { - (struct $name:ident { $($n:ident: $v:ty),* $(,)? }) => { - #[derive(Debug, Clone)] - pub struct $name { $(pub $n: $v),* } - - impl PulseCom for $name { - fn to_com(&self) -> Vec { - let mut vec = Vec::new(); - $(vec.extend(self.$n.to_com());)* - vec - } - - fn from_com(com: &mut Vec) -> Self { - Self { - $($n: <$v>::from_com(com),)* - } - } - } - }; -} diff --git a/src/ptc.rs b/pulse-wire/src/terminal.rs similarity index 99% rename from src/ptc.rs rename to pulse-wire/src/terminal.rs index 4dc117c..1972329 100644 --- a/src/ptc.rs +++ b/pulse-wire/src/terminal.rs @@ -1,3 +1,4 @@ +use crate::PulseCom; use pulse_macros::p_com; #[p_com] diff --git a/src/daemon/main.rs b/src/daemon/main.rs index 61b7dd0..acd2ea1 100644 --- a/src/daemon/main.rs +++ b/src/daemon/main.rs @@ -1,12 +1,10 @@ -pub mod ptc; - use std::time::Instant; -use ptc::PulseCom; +use pulse_wire::PulseCom; fn main() { - let input = ptc::EventLog { - kind: ptc::LogKind::Warn, + let input = pulse_wire::terminal::EventLog { + kind: pulse_wire::terminal::LogKind::Warn, name: "Test".to_string(), message: "Hello, WOrld".to_string(), }; @@ -14,7 +12,7 @@ fn main() { let start = Instant::now(); let mut val = input.to_com(); - let out = ptc::EventLog::from_com(&mut val); + let out = pulse_wire::terminal::EventLog::from_com(&mut val); let elapsed = start.elapsed(); diff --git a/src/daemon/ptc.rs b/src/daemon/ptc.rs deleted file mode 100644 index ab16651..0000000 --- a/src/daemon/ptc.rs +++ /dev/null @@ -1,2 +0,0 @@ -include!("../pc.rs"); -include!("../ptc.rs"); diff --git a/src/terminal/command.rs b/src/terminal/command.rs index 8a8a4f6..3eecd8a 100644 --- a/src/terminal/command.rs +++ b/src/terminal/command.rs @@ -1,4 +1,4 @@ -use crate::{PulseTradeApp, ptc::EventLog}; +use crate::PulseTradeApp; impl PulseTradeApp { pub async fn execute_command(&mut self, ctx: &pulse_ui::state::Context, command: &str) { @@ -18,8 +18,8 @@ impl PulseTradeApp { } _ => { - self.logs.lock().await.push(EventLog { - kind: crate::ptc::LogKind::Err, + self.logs.lock().await.push(pulse_wire::terminal::EventLog { + kind: pulse_wire::terminal::LogKind::Err, name: "cmd".to_string(), message: format!("Command '{}' not found", command), }); diff --git a/src/terminal/formatting.rs b/src/terminal/formatting.rs index 9b62766..9dfef94 100644 --- a/src/terminal/formatting.rs +++ b/src/terminal/formatting.rs @@ -1,4 +1,4 @@ -use crate::ptc::{ +use pulse_wire::terminal::{ ActivePosition, Alert, AlertLevel, EventLog, InspectTarget, LogKind, MarketOverview, Signal, SignalKind, Status, WatchListItem, }; diff --git a/src/terminal/main.rs b/src/terminal/main.rs index 1b90a56..0f02f1a 100644 --- a/src/terminal/main.rs +++ b/src/terminal/main.rs @@ -1,6 +1,5 @@ pub mod command; pub mod formatting; -pub mod ptc; use std::any::Any; @@ -18,12 +17,10 @@ use pulse_ui::{ }, }; -use crate::{ - formatting::{Formatted, apply_padding}, - ptc::{ - ActivePosition, Alert, EventLog, InspectTarget, MarketOverview, Signal, Status, - WatchListItem, - }, +use crate::formatting::{Formatted, apply_padding}; + +use pulse_wire::terminal::{ + ActivePosition, Alert, EventLog, InspectTarget, MarketOverview, Signal, Status, WatchListItem, }; pub struct PulseTradeApp { @@ -88,30 +85,30 @@ impl App for PulseTradeApp { let mut signals = self.signals.lock().await; signals.push(Signal { - kind: ptc::SignalKind::Buy, + kind: pulse_wire::terminal::SignalKind::Buy, symbol: "BTC".to_string(), - param: ptc::SignalParameter::Lim, + param: pulse_wire::terminal::SignalParameter::Lim, price: 118_800.0, }); signals.push(Signal { - kind: ptc::SignalKind::Buy, + kind: pulse_wire::terminal::SignalKind::Buy, symbol: "BTC".to_string(), - param: ptc::SignalParameter::Tap, + param: pulse_wire::terminal::SignalParameter::Tap, price: 120_000.0, }); signals.push(Signal { - kind: ptc::SignalKind::Buy, + kind: pulse_wire::terminal::SignalKind::Buy, symbol: "BTC".to_string(), - param: ptc::SignalParameter::Stl, + param: pulse_wire::terminal::SignalParameter::Stl, price: 118_000.0, }); let mut logs = self.logs.lock().await; logs.push(EventLog { - kind: ptc::LogKind::Warn, + kind: pulse_wire::terminal::LogKind::Warn, name: "pulse.init".to_string(), message: "We're still not done yet ;)".to_string(), }); @@ -119,17 +116,17 @@ impl App for PulseTradeApp { let mut market_overview = self.market_overview.lock().await; market_overview.alerts.push(Alert { - level: ptc::AlertLevel::High, + level: pulse_wire::terminal::AlertLevel::High, message: "BTC funding rate elevated".to_string(), }); market_overview.alerts.push(Alert { - level: ptc::AlertLevel::Medium, + level: pulse_wire::terminal::AlertLevel::Medium, message: "Market volatility increasing".to_string(), }); market_overview.alerts.push(Alert { - level: ptc::AlertLevel::Low, + level: pulse_wire::terminal::AlertLevel::Low, message: "ETH volatility returning to normal".to_string(), }); } @@ -282,13 +279,13 @@ async fn main() { logs: ctx.use_state(Vec::new()), inspect: ctx.use_state(InspectTarget::None), market_overview: ctx.use_state(MarketOverview { - trend: ptc::MarketTrend::Bullish, - volatility: ptc::Volatility::High, + trend: pulse_wire::terminal::MarketTrend::Bullish, + volatility: pulse_wire::terminal::Volatility::High, pressure: 0.324, alerts: Vec::new(), }), status: ctx.use_state(Status { - feed: ptc::Feed::Connected, + feed: pulse_wire::terminal::Feed::Connected, exchange: "Binance".to_string(), dex: "DEX SCREENER".to_string(), latency: 18, diff --git a/src/terminal/ptc.rs b/src/terminal/ptc.rs deleted file mode 100644 index ab16651..0000000 --- a/src/terminal/ptc.rs +++ /dev/null @@ -1,2 +0,0 @@ -include!("../pc.rs"); -include!("../ptc.rs");