use std::io::Write as _;
use yog_abi::YogStr;
thread_local! {
static LOGGING: std::cell::Cell<bool> = const { std::cell::Cell::new(false) };
}
pub(super) fn host_log(level: yog_logging::Level, message: &str) {
let sent = !LOGGING.with(|busy| busy.replace(true)) && {
let r: Option<()> = unsafe {
host!(
"dev/yog/YogLog",
"log",
[I(level as i32), S(YogStr::from_str(message))]
)
};
LOGGING.with(|busy| busy.set(false));
r.is_some()
};
if !sent {
let _ = writeln!(std::io::stderr(), "[yog] [{level:?}] {message}");
}
}