This commit is contained in:
2026-07-29 06:57:25 +02:00
parent 90d3c59ff4
commit f3406c7b97
7 changed files with 62 additions and 51 deletions
+53 -47
View File
@@ -53,16 +53,22 @@ impl TerminalClient {
let status = app.status.clone();
let inspect = app.inspect.clone();
tokio::spawn(Self::run_client(
reader,
watch_list,
active_positions,
logs,
signals,
market_overview,
status,
inspect,
));
tokio::spawn(async {
if let Err(v) = Self::run_client(
reader,
watch_list,
active_positions,
logs,
signals,
market_overview,
status,
inspect,
)
.await
{
panic!("{v}")
}
});
app.sock = Some(self);
@@ -80,55 +86,55 @@ impl TerminalClient {
status: State<Option<Status>>,
inspect: State<InspectTarget>,
) -> tokio::io::Result<()> {
let mut len_buf = [0u8; size_of::<usize>()];
reader
.read_exact(&mut len_buf)
.await
.expect("Failed to get header length");
loop {
let mut len_buf = [0u8; size_of::<usize>()];
reader
.read_exact(&mut len_buf)
.await
.expect("Failed to get header length");
let len = usize::from_le_bytes(len_buf);
let len = usize::from_le_bytes(len_buf);
let mut buffer = vec![0u8; len];
let mut buffer = vec![0u8; len];
reader
.read_exact(&mut buffer)
.await
.expect("Failed to read socket");
reader
.read_exact(&mut buffer)
.await
.expect("Failed to read socket");
match map_postcard_err(postcard::from_bytes(&buffer))? {
TerminalServerMessage::WatchListUpdated(v) => {
*watch_list.lock().await = v;
}
match map_postcard_err(postcard::from_bytes(&buffer))? {
TerminalServerMessage::WatchListUpdated(v) => {
*watch_list.lock().await = v;
}
TerminalServerMessage::PositionsUpdated(v) => {
*active_positions.lock().await = v;
}
TerminalServerMessage::PositionsUpdated(v) => {
*active_positions.lock().await = v;
}
TerminalServerMessage::StrategyUpdated(v) => {
*market_overview.lock().await = Some(v);
}
TerminalServerMessage::StrategyUpdated(v) => {
*market_overview.lock().await = Some(v);
}
TerminalServerMessage::SignalsUpdated(v) => {
*signals.lock().await = v;
}
TerminalServerMessage::SignalsUpdated(v) => {
*signals.lock().await = v;
}
TerminalServerMessage::Inspect(v) => {
*inspect.lock().await = v;
}
TerminalServerMessage::Inspect(v) => {
*inspect.lock().await = v;
}
TerminalServerMessage::StatusUpdated(v) => {
*status.lock().await = Some(v);
}
TerminalServerMessage::StatusUpdated(v) => {
*status.lock().await = Some(v);
}
TerminalServerMessage::SetLogs(v) => {
*logs.lock().await = v;
}
TerminalServerMessage::SetLogs(v) => {
*logs.lock().await = v;
}
TerminalServerMessage::AddLog(v) => {
logs.lock().await.push(v);
TerminalServerMessage::AddLog(v) => {
logs.lock().await.push(v);
}
}
}
Ok(())
}
}