From 4edda4e05ab330b9566b4a17e5e3b308172b1848 Mon Sep 17 00:00:00 2001 From: Nickiel12 <35903114+Nickiel12@users.noreply.github.com> Date: Mon, 20 May 2024 22:12:15 -0600 Subject: [PATCH] cargo fmt; switched to tracing and snafu --- Cargo.lock | 144 ++++++++++++++++++++++ Cargo.toml | 4 + src/coordinator/mod.rs | 8 +- src/coordinator/remote_video_processor.rs | 11 +- src/joystick_source.rs | 5 +- src/main.rs | 17 ++- 6 files changed, 174 insertions(+), 15 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ae11503..474ebd3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -294,6 +294,15 @@ dependencies = [ "libc", ] +[[package]] +name = "crossbeam-channel" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-utils" version = "0.8.19" @@ -1189,9 +1198,13 @@ dependencies = [ "log", "serde", "simplelog", + "snafu", "tokio", "tokio-tungstenite", "toml", + "tracing", + "tracing-appender", + "tracing-subscriber", ] [[package]] @@ -1326,6 +1339,16 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + [[package]] name = "num-conv" version = "0.1.0" @@ -1414,6 +1437,12 @@ dependencies = [ "hashbrown 0.13.2", ] +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + [[package]] name = "pango" version = "0.19.2" @@ -1741,6 +1770,15 @@ dependencies = [ "digest", ] +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + [[package]] name = "simplelog" version = "0.12.2" @@ -1767,6 +1805,27 @@ version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +[[package]] +name = "snafu" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75976f4748ab44f6e5332102be424e7c2dc18daeaf7e725f2040c3ebb133512e" +dependencies = [ + "snafu-derive", +] + +[[package]] +name = "snafu-derive" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4b19911debfb8c2fb1107bc6cb2d61868aaf53a988449213959bb1b5b1ed95f" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.53", +] + [[package]] name = "socket2" version = "0.5.6" @@ -1859,6 +1918,16 @@ dependencies = [ "syn 2.0.53", ] +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + [[package]] name = "time" version = "0.3.34" @@ -2000,6 +2069,75 @@ dependencies = [ "winnow 0.6.5", ] +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-appender" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" +dependencies = [ + "crossbeam-channel", + "thiserror", + "time", + "tracing-subscriber", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "nu-ansi-term", + "sharded-slab", + "smallvec", + "thread_local", + "tracing-core", + "tracing-log", +] + [[package]] name = "tungstenite" version = "0.21.0" @@ -2087,6 +2225,12 @@ version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a" +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + [[package]] name = "vec_map" version = "0.8.2" diff --git a/Cargo.toml b/Cargo.toml index 3750562..3b49e28 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,3 +27,7 @@ tokio = { version = "1.37.0", features = ["rt-multi-thread", "time"] } tokio-tungstenite = "0.21.0" toml = "0.8.12" interprocess = { version = "2.0.0", features = ["tokio"] } +tracing = "0.1.40" +tracing-subscriber = { version = "0.3.18", features = ["tracing-log"] } +tracing-appender = "0.2.3" +snafu = "0.8.2" diff --git a/src/coordinator/mod.rs b/src/coordinator/mod.rs index e45403b..9bb05f3 100644 --- a/src/coordinator/mod.rs +++ b/src/coordinator/mod.rs @@ -104,7 +104,7 @@ impl<'a> CoordState<'a> { to_gui, rt, - pipeline: gstreamer_pipeline::WebcamPipeline::new(), + pipeline: gstreamer_pipeline::WebcamPipeline::new().unwrap(), tracker_keep_alive: Arc::new(AtomicBool::new(false)), tracker_is_alive: Arc::new(AtomicBool::new(false)), @@ -199,9 +199,9 @@ impl<'a> CoordState<'a> { } if !self.tracker_is_alive.load(Ordering::SeqCst) { - if self.tracker_keep_alive.load(Ordering::SeqCst) { - self.start_video_loop().await; - } + if self.tracker_keep_alive.load(Ordering::SeqCst) { + self.start_video_loop().await; + } } if !self.sck_alive_server.load(Ordering::SeqCst) { diff --git a/src/coordinator/remote_video_processor.rs b/src/coordinator/remote_video_processor.rs index 4739d02..423e93e 100644 --- a/src/coordinator/remote_video_processor.rs +++ b/src/coordinator/remote_video_processor.rs @@ -32,7 +32,10 @@ pub async fn remote_video_loop( tracker_state: Arc>, runtime: Handle, ) { - info!("Starting remote tracker processing connection to: {}", conn_string); + info!( + "Starting remote tracker processing connection to: {}", + conn_string + ); let video_info = gstreamer_video::VideoInfo::builder(gstreamer_video::VideoFormat::Rgb, 640, 480) .build() @@ -95,7 +98,6 @@ pub async fn remote_video_loop( return; } - if !keep_alive.load(Ordering::SeqCst) { info!("Shutting down remote video loop"); break; @@ -152,7 +154,10 @@ async fn listen_to_messages( } } } - info!("Stopping tracker connection listen with keep alive: {}", keep_alive.load(Ordering::SeqCst)); + info!( + "Stopping tracker connection listen with keep alive: {}", + keep_alive.load(Ordering::SeqCst) + ); } fn get_video_frame( diff --git a/src/joystick_source.rs b/src/joystick_source.rs index 7191d60..a0d6297 100644 --- a/src/joystick_source.rs +++ b/src/joystick_source.rs @@ -2,12 +2,12 @@ use crate::coordinator::{ApplicationEvent, MoveEvent}; use async_channel::Sender; use gilrs::{ev::filter::FilterFn, Axis, Button, Event, EventType, Filter, Gilrs, GilrsBuilder}; -use log::{info, warn}; use std::{ panic::{self, AssertUnwindSafe}, sync::{atomic::AtomicBool, Arc}, time::Duration, }; +use tracing::{info, warn}; static MAX_SENT_ZEROS: u32 = 10; @@ -35,6 +35,7 @@ impl FilterFn for UnknownSlayer { } } +#[tracing::instrument] pub async fn joystick_loop(tx: Sender, is_alive: Arc) { let mut gilrs = GilrsBuilder::new().set_update_state(false).build().unwrap(); @@ -98,7 +99,7 @@ pub async fn joystick_loop(tx: Sender, is_alive: Arc { - warn!("[joystick loop] The MEC is full!") + warn!("The MEC is full!") } } } diff --git a/src/main.rs b/src/main.rs index 35982eb..d6682d2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,9 +1,10 @@ use gtk::prelude::{ApplicationExt, ApplicationExtManual}; use gtk::{glib, Application}; -use log::{error, info}; -use simplelog::SimpleLogger; use std::{env, sync::Arc}; use tokio::{runtime, sync::RwLock}; +use tracing::{self, info, Level}; +use tracing_appender; +use tracing_subscriber; use crate::config::load_config; @@ -19,10 +20,14 @@ fn main() -> glib::ExitCode { // set the environment var to make gtk use window's default action bar env::set_var("gtk_csd", "0"); - if let Err(e) = SimpleLogger::init(simplelog::LevelFilter::Debug, simplelog::Config::default()) - { - error!("Failed to init the simplelogger!: {e}"); - } + let file_appender = tracing_appender::rolling::daily(".", "joystick-log.log"); + let (non_blocking, _gaurd) = tracing_appender::non_blocking(file_appender); + tracing_subscriber::fmt().with_writer(non_blocking).init(); + + let span = tracing::span!(Level::TRACE, "main"); + let _enter = span.enter(); + + info!("tracing intialized"); let config = Arc::new(RwLock::new(load_config()));