Skip to content

Instantly share code, notes, and snippets.

@ericflo
Created May 17, 2020 23:31
Show Gist options
  • Save ericflo/92bc57abb301a2b66474913ee0c1d919 to your computer and use it in GitHub Desktop.
Save ericflo/92bc57abb301a2b66474913ee0c1d919 to your computer and use it in GitHub Desktop.
INFO [reactor] 1
INFO [reactor] 2
INFO [reactor] 3
INFO [reactor] 4
INFO [reactor] 5
INFO [reactor] 6
INFO [reactor] Linked wasi successfully
INFO [reactor] 7
ERROR [reactor] Could not run main: Could not find Engine_Export_OnStart on wasm instance: Wasm3(Wasm3Error(0x7ff7549b9468))
#[macro_use]
extern crate log;
use flexi_logger::{Logger};
use anyhow::{Result, bail};
use wasm3::{Environment, Module, Runtime, CallContext};
pub fn run_main() -> Result<()> {
Logger::with_str("debug")
.print_message()
.log_to_file()
.directory("logs")
.suppress_timestamp()
.suffix("log")
.discriminant("reactor")
.start()
.unwrap_or_else(|e| panic!("Logger initialization failed with {}", e));
let filename = String::from("system.wasm");
info!("1");
let env = match Environment::new() {
Ok(e) => e,
Err(err) => bail!("Could not create wasm3 environment: {:?}", err),
};
info!("2");
let rt: &'static Runtime = match env.create_runtime(1024 * 60 * 60) {
Ok(r) => Box::leak(Box::new(r)),
Err(err) => bail!("Could not create runtime: {:?}", err),
};
info!("3");
let wasm_bytes = match std::fs::read(filename.clone()) {
Ok(b) => b,
Err(err) => bail!("Could not read wasm file at {}: {:?}", filename.clone(), err),
};
info!("4");
let module = match Module::parse(&env, wasm_bytes.as_ref()) {
Ok(m) => m,
Err(err) => bail!("Could not compile wasm file at {}: {:?}", filename.clone(), err),
};
info!("5");
let mut loaded_module = match rt.load_module(module) {
Ok(m) => m,
Err(err) => bail!("Could not load wasm module at {}: {:?}", filename.clone(), err),
};
info!("6");
match loaded_module.link_wasi() {
Ok(_) => info!("Linked wasi successfully"),
Err(err) => error!("Could not link wasi: {:?}", err),
};
info!("7");
let func = match loaded_module.find_function::<(), ()>("Engine_Export_OnStart") {
Ok(f) => f,
Err(err) => bail!("Could not find Engine_Export_OnStart on wasm instance: {:?}", err),
};
info!("8");
match func.call() {
Ok(_) => {},
Err(err) => bail!("Could not call Engine_Export_OnStart on wasm instance: {:?}", err),
};
info!("9");
Ok(())
}
pub fn main() {
match run_main() {
Ok(_) => {},
Err(err) => error!("Could not run main: {:?}", err),
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment