This commit is contained in:
Martin Kavík 2024-07-05 03:30:17 +02:00
parent 7435f6c136
commit 31613dbac9
2 changed files with 32 additions and 13 deletions

View file

@ -1,7 +1,7 @@
use shared::wellen_helpers;
use std::sync::Mutex;
use wellen::simple::Waveform;
use zoon::{*, eprintln};
use zoon::{eprintln, *};
#[derive(Default)]
struct BrowserPlatformStore {

View file

@ -1,5 +1,5 @@
use crate::{AddedDecodersCount, DecoderPath};
use wasmtime::component::{*, Component as WasmtimeComponent};
use wasmtime::component::{Component as WasmtimeComponent, *};
use wasmtime::{Engine, Store};
use wasmtime_wasi::{WasiCtx, WasiView};
@ -11,8 +11,12 @@ struct State {
}
impl WasiView for State {
fn ctx(&mut self) -> &mut WasiCtx { &mut self.ctx }
fn table(&mut self) -> &mut ResourceTable { &mut self.table }
fn ctx(&mut self) -> &mut WasiCtx {
&mut self.ctx
}
fn table(&mut self) -> &mut ResourceTable {
&mut self.table
}
}
impl component::decoder::host::Host for State {
@ -21,6 +25,9 @@ impl component::decoder::host::Host for State {
}
}
// @TODO Make println work on Windows?
// https://github.com/tauri-apps/tauri/discussions/8626
// @TODO Remove / improve comments below
// Testing
// FW.add_decoders(["../test_files/components/rust_decoder/rust_decoder.wasm"])
@ -37,7 +44,9 @@ pub fn add_decoders(decoder_paths: Vec<DecoderPath>) -> AddedDecodersCount {
if let Err(error) = add_decoder(&decoder_paths[0]) {
eprintln!("add_decoders error: {error:?}");
}
}).join().unwrap();
})
.join()
.unwrap();
decoder_paths_len
}
@ -46,20 +55,30 @@ fn add_decoder(path: &str) -> wasmtime::Result<()> {
let engine = Engine::default();
let wasmtime_component = WasmtimeComponent::from_file(&engine, path)?;
let mut linker = Linker::new(&engine);
wasmtime_wasi::add_to_linker_sync(&mut linker)?;
Component::add_to_linker(&mut linker, |state: &mut State| state)?;
let mut store = Store::new(&engine, State {
ctx: WasiCtx::builder().build(),
table: ResourceTable::new(),
});
let mut store = Store::new(
&engine,
State {
ctx: WasiCtx::builder().build(),
table: ResourceTable::new(),
},
);
let component = Component::instantiate(&mut store, &wasmtime_component, &linker)?;
let component = Component::instantiate(&mut store, &wasmtime_component, &linker)?;
println!("Decoder name: {}", component.component_decoder_decoder().call_name(&mut store)?);
component.component_decoder_decoder().call_init(&mut store)?;
println!(
"Decoder name: {}",
component
.component_decoder_decoder()
.call_name(&mut store)?
);
component
.component_decoder_decoder()
.call_init(&mut store)?;
Ok(())
}