From ea5db5846bc700f0da912225ddcb4be372359044 Mon Sep 17 00:00:00 2001 From: Mica White Date: Mon, 7 Oct 2024 20:45:14 -0400 Subject: Finish basic windowing stuff --- console/src/lib.rs | 58 ++++++++++++++++++++++-------------------------------- 1 file changed, 24 insertions(+), 34 deletions(-) (limited to 'console/src') diff --git a/console/src/lib.rs b/console/src/lib.rs index d98183c..578d255 100644 --- a/console/src/lib.rs +++ b/console/src/lib.rs @@ -1,13 +1,9 @@ -use std::net::Ipv6Addr; +use std::io::{stdout, Write}; +use std::sync::mpsc::{Receiver, Sender}; use log::Level; -use pollster::FutureExt; -use smol::channel::{Receiver, Sender}; -use smol::io::AsyncWriteExt; -use smol::net::{TcpListener, TcpStream}; pub struct Console { - tcp_socket: TcpStream, messages: Receiver, sender: Sender, } @@ -41,11 +37,8 @@ pub enum ConsoleMessage { impl Console { pub async fn new(port: u16) -> Result { - let tcp_listener = TcpListener::bind((Ipv6Addr::LOCALHOST, port)).await?; - let tcp_socket = tcp_listener.accept().await?.0; - let (sender, reciever) = smol::channel::unbounded(); + let (sender, reciever) = std::sync::mpsc::channel(); Ok(Self { - tcp_socket, messages: reciever, sender, }) @@ -59,9 +52,11 @@ impl Console { ConsoleLogger(self.sender()) } - pub async fn flush(&mut self) -> std::io::Result<()> { + pub fn flush(&self) -> std::io::Result<()> { + let mut stdout = stdout().lock(); + while let Ok(message) = self.messages.try_recv() { - match message { + let message = match message { ConsoleMessage::RuntimeLog { message, level, @@ -69,8 +64,7 @@ impl Console { line, } => { let message = message.replace('\n', "\\n"); - let msg = format!("runtimelog {level} {file}:{line} {message}\n"); - self.tcp_socket.write(msg.as_bytes()).await?; + format!("runtimelog {level} {file}:{line} {message}\n") } ConsoleMessage::ScriptLog { message, @@ -79,32 +73,31 @@ impl Console { line, } => { let message = message.replace('\n', "\\n"); - let msg = format!("scriptlog {level} {file}:{line} {message}\n"); - self.tcp_socket.write(msg.as_bytes()).await?; + format!("scriptlog {level} {file}:{line} {message}\n") } ConsoleMessage::FrameTime { timestamp: unix_timestamp, } => { - let msg = format!("frametime {unix_timestamp}"); - self.tcp_socket.write(msg.as_bytes()).await?; + format!("frametime {unix_timestamp}") } ConsoleMessage::ScopeStart { scope_name, timestamp: unix_timestamp, } => { - let msg = format!("scopestart {scope_name} {unix_timestamp}"); - self.tcp_socket.write(msg.as_bytes()).await?; + format!("scopestart {scope_name} {unix_timestamp}") } ConsoleMessage::ScopeEnd { timestamp: unix_timestamp, } => { - let msg = format!("scopeend {unix_timestamp}"); - self.tcp_socket.write(msg.as_bytes()).await?; + format!("scopeend {unix_timestamp}") } - } + }; + + stdout.write_all(message.as_bytes())?; + stdout.write_all(b"\n")?; } - self.tcp_socket.flush().await?; + stdout.flush()?; Ok(()) } @@ -112,7 +105,7 @@ impl Console { impl ConsoleLogger { pub fn send(&self, message: ConsoleMessage) { - _ = self.0.send(message).block_on(); + _ = self.0.send(message); } } @@ -122,15 +115,12 @@ impl log::Log for ConsoleLogger { } fn log(&self, record: &log::Record) { - let _ = self - .0 - .send(ConsoleMessage::RuntimeLog { - message: record.args().to_string(), - level: record.level(), - file: record.file().map(str::to_string).unwrap_or_default(), - line: record.line().unwrap_or_default(), - }) - .block_on(); + let _ = self.0.send(ConsoleMessage::RuntimeLog { + message: record.args().to_string(), + level: record.level(), + file: record.file().map(str::to_string).unwrap_or_default(), + line: record.line().unwrap_or_default(), + }); } fn flush(&self) {} -- cgit v1.2.3