projects
/
ldk-java
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
e230b76
)
enable async wasm initialization
author
Arik Sosman
<git@arik.io>
Wed, 27 Jan 2021 18:36:26 +0000
(10:36 -0800)
committer
Arik Sosman
<git@arik.io>
Wed, 27 Jan 2021 18:36:26 +0000
(10:36 -0800)
typescript_strings.py
patch
|
blob
|
history
diff --git
a/typescript_strings.py
b/typescript_strings.py
index a1cba27c39ef17518c6ec8c61a1e5368d64e36ce..1715a54dc46ca29b5c9d1f18c104f83ecc824684 100644
(file)
--- a/
typescript_strings.py
+++ b/
typescript_strings.py
@@
-71,7
+71,16
@@
public static native long new_empty_slice_vec();
"""
"""
- self.bindings_footer = ""
+ self.bindings_footer = """
+ export async function initializeWasm(allowDoubleInitialization: boolean = false): Promise<void> {
+ if(isWasmInitialized && !allowDoubleInitialization) {
+ return;
+ }
+ const wasmInstance = await WebAssembly.instantiate(wasmModule, imports)
+ wasm = wasmInstance.exports;
+ isWasmInitialized = true;
+ }
+ """
self.common_base = """
export default class CommonBase {
self.common_base = """
export default class CommonBase {
@@
-286,8
+295,8
@@
imports.env["abort"] = function () {
console.error("ABORT");
};
console.error("ABORT");
};
-const wasmInstance = await WebAssembly.instantiate(wasmModule, imports)
-
const wasm = wasmInstance.exports
;
+let wasm = null;
+
let isWasmInitialized: boolean = false
;
// WASM CODEC
// WASM CODEC
@@
-889,6
+898,9
@@
const decodeString = (stringPointer, free = true) => {
return_value = f"{converter}(nativeResponseValue)"
out_java = f"""\texport function {method_name}({method_argument_string}): {return_type_info.java_ty} {{
return_value = f"{converter}(nativeResponseValue)"
out_java = f"""\texport function {method_name}({method_argument_string}): {return_type_info.java_ty} {{
+ if(!isWasmInitialized){{
+ throw new Error("initializeWasm() must be awaited first!");
+ }}
const nativeResponseValue = wasm.{method_name}({native_call_argument_string});
return {return_value};
\n\t}}
const nativeResponseValue = wasm.{method_name}({native_call_argument_string});
return {return_value};
\n\t}}