@@ -2,16 +2,53 @@ package polywrap
22
33import "unsafe"
44
5- //go:wasm-module w3
6- //export __w3_subinvoke
7- func __w3_subinvoke (uriPtr , uriLen , modulePtr , moduleLen , methodPtr , methodLen , inputPtr , inputLen uint32 )
5+ //go:wasm-module wrap
6+ //export __wrap_subinvoke
7+ func __wrap_subinvoke (uriPtr , uriLen , methodPtr , methodLen , argsPtr , argsLen uint32 ) bool
88
9- func W3Subinvoke (uri , module , method string , input []byte ) {
9+ // Subinvoke Result
10+
11+ //go:wasm-module wrap
12+ //export __wrap_subinvoke_result_len
13+ func __wrap_subinvoke_result_len () uint32
14+
15+ //go:wasm-module wrap
16+ //export __wrap_subinvoke_result
17+ func __wrap_subinvoke_result (ptr uint32 )
18+
19+ // Subinvoke Error
20+
21+ //go:wasm-module wrap
22+ //export __wrap_subinvoke_error_len
23+ func __wrap_subinvoke_error_len () uint32
24+
25+ //go:wasm-module wrap
26+ //export __wrap_subinvoke_error
27+ func __wrap_subinvoke_error (ptr uint32 )
28+
29+ func WrapSubinvoke (uri , method string , args []byte ) {
1030 uriPtr := unsafe .Pointer (& uri )
11- modulePtr := unsafe .Pointer (& module )
1231 methodPtr := unsafe .Pointer (& method )
13- inputPtr := unsafe .Pointer (& input )
32+ argsPtr := unsafe .Pointer (& args )
33+
34+ result := __wrap_subinvoke (* (* uint32 )(uriPtr ), uint32 (len (uri )), * (* uint32 )(methodPtr ), uint32 (len (method )),
35+ * (* uint32 )(argsPtr ), uint32 (len (args )))
36+
37+ if ! result {
38+ errorLen := __wrap_subinvoke_error_len ()
39+ errorBuf := make ([]byte , errorLen )
40+ errorPtr := unsafe .Pointer (& errorBuf )
41+
42+ __wrap_subinvoke_error (* (* uint32 )(errorPtr ))
43+
44+ // TODO return Result.Err
45+ }
46+
47+ resultLen := __wrap_subinvoke_result_len ()
48+ resultBuf := make ([]byte , resultLen )
49+ resultPtr := unsafe .Pointer (& resultBuf )
50+
51+ __wrap_subinvoke_result (* (* uint32 )(resultPtr ))
1452
15- __w3_subinvoke (* (* uint32 )(uriPtr ), uint32 (len (uri )), * (* uint32 )(modulePtr ), uint32 (len (module )),
16- * (* uint32 )(methodPtr ), uint32 (len (method )), * (* uint32 )(inputPtr ), uint32 (len (input )))
53+ // TODO return Result.Ok
1754}
0 commit comments