From 79e485b67d90ae61bf960e13f41cf61fb3403024 Mon Sep 17 00:00:00 2001 From: Caelan Sayler Date: Wed, 16 Oct 2024 14:50:24 +0100 Subject: [PATCH] cpp rust is compiling --- src/lib-cpp/include/bridge.hpp | 4 +-- src/lib-cpp/src/lib.rs | 47 ++++++++++------------------------ 2 files changed, 16 insertions(+), 35 deletions(-) diff --git a/src/lib-cpp/include/bridge.hpp b/src/lib-cpp/include/bridge.hpp index e637505a..7207ad80 100644 --- a/src/lib-cpp/include/bridge.hpp +++ b/src/lib-cpp/include/bridge.hpp @@ -15,6 +15,6 @@ struct DownloadCallbackManager { }; struct LoggerCallbackManager { - void log(::LogLevel level, ::rust::String message) const {}; + void log(::rust::String level, ::rust::String message) const {}; }; - + diff --git a/src/lib-cpp/src/lib.rs b/src/lib-cpp/src/lib.rs index 408fde0f..4d0f62cb 100644 --- a/src/lib-cpp/src/lib.rs +++ b/src/lib-cpp/src/lib.rs @@ -1,10 +1,8 @@ #![allow(non_snake_case)] -use anyhow::{anyhow, bail, Result}; +use anyhow::{bail, Result}; use std::path::PathBuf; -use std::sync::{Arc, Mutex}; use std::sync::atomic::{AtomicUsize, Ordering}; -use lazy_static::lazy_static; use log::{Level, Log, Metadata, Record}; use velopack::{ locator::VelopackLocatorConfig, @@ -74,14 +72,6 @@ mod ffi { pub has_data: bool, } - pub enum LogLevel { - Trace = 0, - Debug = 1, - Info = 2, - Warn = 3, - Error = 4, - } - // C++ types and signatures exposed to Rust. unsafe extern "C++" { include!("velopack_libc/include/bridge.hpp"); @@ -95,7 +85,7 @@ mod ffi { type DownloadCallbackManager; fn download_progress(self: &DownloadCallbackManager, progress: i16); type LoggerCallbackManager; - fn log(self: &LoggerCallbackManager, level: LogLevel, message: String); + fn log(self: &LoggerCallbackManager, level: String, message: String); } // Rust types and signatures exposed to C++. @@ -228,18 +218,6 @@ fn bridge_check_for_updates(manager: &UpdateManagerOpaque) -> Result) -> Result<()> { - // let info = to_update_info(&to_download); - // - // let (sender, receiver) = std::sync::mpsc::channel::(); - // std::thread::spawn(move || { - // while let Ok(progress) = receiver.recv() { - // cb.download_progress(progress); - // } - // }); - // - // manager.obj.download_updates(&info, Some(sender))?; - // Ok(()) - let info = to_update_info(&to_download); let (progress_sender, progress_receiver) = std::sync::mpsc::channel::(); @@ -309,8 +287,9 @@ fn bridge_appbuilder_run(cb: cxx::UniquePtr, custom_ar if custom_args.has_data { app = app.set_args(custom_args.data); } - - + + let _ = log::set_logger(&LOGGER); + log::set_max_level(log::LevelFilter::Trace); app.run(); } @@ -331,15 +310,17 @@ impl Log for LoggerImpl { let text = format!("{}", record.args()); let level = match record.level() { - Level::Error => ffi::LogLevel::Error, - Level::Warn => ffi::LogLevel::Warn, - Level::Info => ffi::LogLevel::Info, - Level::Debug => ffi::LogLevel::Debug, - Level::Trace => ffi::LogLevel::Trace, - }; + Level::Error => "error", + Level::Warn => "warn", + Level::Info => "info", + Level::Debug => "debug", + Level::Trace => "trace", + }.to_string(); if let Some(cb) = get_logger() { - cb.log(level, text); + if let Some(cb) = unsafe { cb.as_mut() } { + cb.log(level, text); + } } }