Created
May 17, 2020 23:31
-
-
Save ericflo/92bc57abb301a2b66474913ee0c1d919 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#[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