gmt_dos-clients_scope 3.1.1

GMT DOS Scope Client
mod txrx;
use txrx::{Noise, Sin};

fn main() -> anyhow::Result<()> {
    let rt = tokio::runtime::Runtime::new()?;
    let _guard = rt.enter();

    tracing::subscriber::set_global_default(
        tracing_subscriber::FmtSubscriber::builder()
            .with_env_filter(tracing_subscriber::EnvFilter::from_default_env())
            .finish(),
    )
    .unwrap();

    let mut scope = gmt_dos_clients_scope::client::Scope::new()
        .signal::<Sin>()?
        .signal::<Noise>()?;
    let monitor = scope.take_monitor();

    std::thread::spawn(move || {
        rt.block_on(async {
            monitor.join().await?;
            Ok::<(), anyhow::Error>(())
        })
    });

    let native_options = eframe::NativeOptions::default();
    let _ = eframe::run_native(
        "GMT DOS Actors Scope",
        native_options,
        Box::new(|cc| {
            scope.run(cc.egui_ctx.clone());
            Ok(Box::new(scope))
        }),
    );

    Ok(())
}