From 509e5ce1e17417a70b9bcce8bc6e33c05106811d Mon Sep 17 00:00:00 2001 From: Mica White Date: Thu, 15 Aug 2024 20:23:26 -0400 Subject: Start profiling --- console/src/lib.rs | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) (limited to 'console') diff --git a/console/src/lib.rs b/console/src/lib.rs index afab4af..d98183c 100644 --- a/console/src/lib.rs +++ b/console/src/lib.rs @@ -12,6 +12,8 @@ pub struct Console { sender: Sender, } +pub struct ConsoleLogger(Sender); + pub enum ConsoleMessage { RuntimeLog { message: String, @@ -25,10 +27,18 @@ pub enum ConsoleMessage { file: String, line: u32, }, + FrameTime { + timestamp: i64, + }, + ScopeStart { + scope_name: String, + timestamp: i64, + }, + ScopeEnd { + timestamp: i64, + }, } -pub struct ConsoleLogger(Sender); - impl Console { pub async fn new(port: u16) -> Result { let tcp_listener = TcpListener::bind((Ipv6Addr::LOCALHOST, port)).await?; @@ -41,7 +51,7 @@ impl Console { }) } - pub fn sender(&self) -> Sender { + fn sender(&self) -> Sender { self.sender.clone() } @@ -58,6 +68,7 @@ impl Console { file, line, } => { + let message = message.replace('\n', "\\n"); let msg = format!("runtimelog {level} {file}:{line} {message}\n"); self.tcp_socket.write(msg.as_bytes()).await?; } @@ -67,9 +78,29 @@ impl Console { file, line, } => { + let message = message.replace('\n', "\\n"); let msg = format!("scriptlog {level} {file}:{line} {message}\n"); self.tcp_socket.write(msg.as_bytes()).await?; } + ConsoleMessage::FrameTime { + timestamp: unix_timestamp, + } => { + let msg = format!("frametime {unix_timestamp}"); + self.tcp_socket.write(msg.as_bytes()).await?; + } + ConsoleMessage::ScopeStart { + scope_name, + timestamp: unix_timestamp, + } => { + let msg = format!("scopestart {scope_name} {unix_timestamp}"); + self.tcp_socket.write(msg.as_bytes()).await?; + } + ConsoleMessage::ScopeEnd { + timestamp: unix_timestamp, + } => { + let msg = format!("scopeend {unix_timestamp}"); + self.tcp_socket.write(msg.as_bytes()).await?; + } } } @@ -79,6 +110,12 @@ impl Console { } } +impl ConsoleLogger { + pub fn send(&self, message: ConsoleMessage) { + _ = self.0.send(message).block_on(); + } +} + impl log::Log for ConsoleLogger { fn enabled(&self, _: &log::Metadata) -> bool { true -- cgit v1.2.3