summaryrefslogtreecommitdiff
path: root/console/src
diff options
context:
space:
mode:
Diffstat (limited to 'console/src')
-rw-r--r--console/src/lib.rs58
1 files changed, 24 insertions, 34 deletions
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<ConsoleMessage>,
sender: Sender<ConsoleMessage>,
}
@@ -41,11 +37,8 @@ pub enum ConsoleMessage {
impl Console {
pub async fn new(port: u16) -> Result<Self, std::io::Error> {
- 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) {}