diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..75a24d6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +/target +.idea + +*.wasm +*.wat diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..c4f1c76 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,91 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "fluence" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "380eb8c085cacb02731b4a4cde79bbfa1870bd650a76d8410f4b3ba82092a33d" +dependencies = [ + "fluence-sdk-macro", + "fluence-sdk-main", +] + +[[package]] +name = "fluence-sdk-macro" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7004f9b47d73070417105d06a158e1a000bbcd2cf1256bf7522c4fcf09e43aa" +dependencies = [ + "fluence-sdk-main", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "fluence-sdk-main" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1433533429c752b55b64b99dbec23849104a82a1a46d34125b66fe0b284dedd7" +dependencies = [ + "log", + "syn", +] + +[[package]] +name = "log" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "multi_module_example" +version = "0.1.0" +dependencies = [ + "fluence", + "log", +] + +[[package]] +name = "proc-macro2" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "quote" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "syn" +version = "0.15.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "unicode-xid" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..4cc197e --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "multi_module_example" +version = "0.1.0" +authors = ["Fluence Labs"] +edition = "2018" + +[lib] +name = "multi_module_example" +path = "src/lib.rs" +crate-type = ["cdylib"] + +[profile.release] +debug = false +lto = true +opt-level = "z" +panic = "abort" + +[dependencies] +fluence = {version = "0.1.11", features = ["wasm_logger", "side_module"]} +log = "0.4" diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..4abfb9b --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,19 @@ +use fluence::sdk::*; + +fn init() { + logger::WasmLogger::init_with_level(log::Level::Info).unwrap(); +} + +#[invocation_handler(init_fn = init, side_modules = (sqlite, redis))] +fn run(arg: String) -> Vec<u8> { + let cmd: Vec<_> = arg.split(" ").collect(); + if cmd.len() < 2 { + return "incorrect command".as_bytes().to_vec(); + } + + match cmd[0] { + "redis" => redis::call(cmd[1].as_bytes()), + "sqlite" => sqlite::call(cmd[1].as_bytes()), + _ => "unknown_command".as_bytes().to_vec(), + } +} \ No newline at end of file