fix wasm
This commit is contained in:
		@@ -9,6 +9,7 @@ use alloc::sync::Arc;
 | 
			
		||||
use alloc::*;
 | 
			
		||||
use core::cell::RefCell;
 | 
			
		||||
use core::fmt::Debug;
 | 
			
		||||
use core::sync::atomic::{AtomicBool, Ordering};
 | 
			
		||||
use futures_util::FutureExt;
 | 
			
		||||
use gloo_utils::format::JsValueSerdeExt;
 | 
			
		||||
use js_sys::*;
 | 
			
		||||
@@ -185,54 +186,52 @@ pub fn initialize_veilid_wasm() {
 | 
			
		||||
    console_error_panic_hook::set_once();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static SETUP_ONCE: Once = Once::new();
 | 
			
		||||
static INITIALIZED: AtomicBool = AtomicBool::new(false);
 | 
			
		||||
#[wasm_bindgen()]
 | 
			
		||||
pub fn initialize_veilid_core(platform_config: String) {
 | 
			
		||||
    SETUP_ONCE.call_once(|| {
 | 
			
		||||
        let platform_config: VeilidWASMConfig = veilid_core::deserialize_json(&platform_config)
 | 
			
		||||
            .expect("failed to deserialize platform config json");
 | 
			
		||||
    if INITIALIZED.swap(true, Ordering::Relaxed) {
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    let platform_config: VeilidWASMConfig = veilid_core::deserialize_json(&platform_config)
 | 
			
		||||
        .expect("failed to deserialize platform config json");
 | 
			
		||||
 | 
			
		||||
        // Set up subscriber and layers
 | 
			
		||||
        let subscriber = Registry::default();
 | 
			
		||||
        let mut layers = Vec::new();
 | 
			
		||||
        let mut filters = (*FILTERS).borrow_mut();
 | 
			
		||||
    // Set up subscriber and layers
 | 
			
		||||
    let subscriber = Registry::default();
 | 
			
		||||
    let mut layers = Vec::new();
 | 
			
		||||
    let mut filters = (*FILTERS).borrow_mut();
 | 
			
		||||
 | 
			
		||||
        // Performance logger
 | 
			
		||||
        if platform_config.logging.performance.enabled {
 | 
			
		||||
            let filter = veilid_core::VeilidLayerFilter::new(
 | 
			
		||||
                platform_config.logging.performance.level,
 | 
			
		||||
                None,
 | 
			
		||||
            );
 | 
			
		||||
            let layer = WASMLayer::new(
 | 
			
		||||
                WASMLayerConfigBuilder::new()
 | 
			
		||||
                    .set_report_logs_in_timings(platform_config.logging.performance.logs_in_timings)
 | 
			
		||||
                    .set_console_config(if platform_config.logging.performance.logs_in_console {
 | 
			
		||||
                        ConsoleConfig::ReportWithConsoleColor
 | 
			
		||||
                    } else {
 | 
			
		||||
                        ConsoleConfig::NoReporting
 | 
			
		||||
                    })
 | 
			
		||||
                    .build(),
 | 
			
		||||
            )
 | 
			
		||||
            .with_filter(filter.clone());
 | 
			
		||||
            filters.insert("performance", filter);
 | 
			
		||||
            layers.push(layer.boxed());
 | 
			
		||||
        };
 | 
			
		||||
    // Performance logger
 | 
			
		||||
    if platform_config.logging.performance.enabled {
 | 
			
		||||
        let filter =
 | 
			
		||||
            veilid_core::VeilidLayerFilter::new(platform_config.logging.performance.level, None);
 | 
			
		||||
        let layer = WASMLayer::new(
 | 
			
		||||
            WASMLayerConfigBuilder::new()
 | 
			
		||||
                .set_report_logs_in_timings(platform_config.logging.performance.logs_in_timings)
 | 
			
		||||
                .set_console_config(if platform_config.logging.performance.logs_in_console {
 | 
			
		||||
                    ConsoleConfig::ReportWithConsoleColor
 | 
			
		||||
                } else {
 | 
			
		||||
                    ConsoleConfig::NoReporting
 | 
			
		||||
                })
 | 
			
		||||
                .build(),
 | 
			
		||||
        )
 | 
			
		||||
        .with_filter(filter.clone());
 | 
			
		||||
        filters.insert("performance", filter);
 | 
			
		||||
        layers.push(layer.boxed());
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
        // API logger
 | 
			
		||||
        if platform_config.logging.api.enabled {
 | 
			
		||||
            let filter =
 | 
			
		||||
                veilid_core::VeilidLayerFilter::new(platform_config.logging.api.level, None);
 | 
			
		||||
            let layer = veilid_core::ApiTracingLayer::get().with_filter(filter.clone());
 | 
			
		||||
            filters.insert("api", filter);
 | 
			
		||||
            layers.push(layer.boxed());
 | 
			
		||||
        }
 | 
			
		||||
    // API logger
 | 
			
		||||
    if platform_config.logging.api.enabled {
 | 
			
		||||
        let filter = veilid_core::VeilidLayerFilter::new(platform_config.logging.api.level, None);
 | 
			
		||||
        let layer = veilid_core::ApiTracingLayer::get().with_filter(filter.clone());
 | 
			
		||||
        filters.insert("api", filter);
 | 
			
		||||
        layers.push(layer.boxed());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
        let subscriber = subscriber.with(layers);
 | 
			
		||||
        subscriber
 | 
			
		||||
            .try_init()
 | 
			
		||||
            .map_err(|e| format!("failed to initialize logging: {}", e))
 | 
			
		||||
            .expect("failed to initalize WASM platform");
 | 
			
		||||
    });
 | 
			
		||||
    let subscriber = subscriber.with(layers);
 | 
			
		||||
    subscriber
 | 
			
		||||
        .try_init()
 | 
			
		||||
        .map_err(|e| format!("failed to initialize logging: {}", e))
 | 
			
		||||
        .expect("failed to initalize WASM platform");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[wasm_bindgen()]
 | 
			
		||||
@@ -356,14 +355,15 @@ pub fn routing_context_with_privacy(id: u32) -> u32 {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[wasm_bindgen()]
 | 
			
		||||
pub fn routing_context_with_custom_privacy(id: u32, stability: String) -> u32 {
 | 
			
		||||
    let stability: veilid_core::Stability = veilid_core::deserialize_json(&stability).unwrap();
 | 
			
		||||
pub fn routing_context_with_custom_privacy(id: u32, safety_selection: String) -> u32 {
 | 
			
		||||
    let safety_selection: veilid_core::SafetySelection =
 | 
			
		||||
        veilid_core::deserialize_json(&safety_selection).unwrap();
 | 
			
		||||
 | 
			
		||||
    let rc = (*ROUTING_CONTEXTS).borrow();
 | 
			
		||||
    let Some(routing_context) = rc.get(&id) else {
 | 
			
		||||
        return 0;
 | 
			
		||||
    };
 | 
			
		||||
    let Ok(routing_context) = routing_context.clone().with_custom_privacy(stability) else {
 | 
			
		||||
    let Ok(routing_context) = routing_context.clone().with_custom_privacy(safety_selection) else {
 | 
			
		||||
        return 0;
 | 
			
		||||
    };
 | 
			
		||||
    let new_id = add_routing_context(routing_context);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user