Signed-off-by: Matheus Sampaio Queiroga <srherobrine20@gmail.com>
47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
_ "unsafe"
|
|
|
|
_ "sirherobrine23.com.br/Sirherobrine23/napi-go/module"
|
|
|
|
"sirherobrine23.com.br/Sirherobrine23/napi-go"
|
|
)
|
|
|
|
//go:linkname Register sirherobrine23.com.br/Sirherobrine23/napi-go/module.Register
|
|
func Register(env napi.EnvType, export *napi.Object) {
|
|
jsFunc := napi.Callback(func(ci *napi.CallbackInfo) (napi.ValueType, error) {
|
|
var waitTime = time.Second * 3
|
|
|
|
if len(ci.Args) == 1 {
|
|
if typof, _ := ci.Args[0].Type(); typof == napi.TypeNumber {
|
|
wait := napi.As[*napi.Number](ci.Args[0])
|
|
_waitTime, _ := wait.Int()
|
|
waitTime = time.Duration(_waitTime)
|
|
}
|
|
}
|
|
|
|
fmt.Printf("Called JS, waiting %s\n", waitTime)
|
|
<-time.After(waitTime)
|
|
return nil, nil
|
|
})
|
|
|
|
jsEnd := napi.ThreadsafeFunctionFinalizeCallback(func(env napi.EnvType, context any) {
|
|
println("Called go func end")
|
|
})
|
|
|
|
callJSCallback := napi.ThreadsafeFunctionCallJSCallback(func(env napi.EnvType, jsCallback *napi.Function, data any) {
|
|
println("Called callJSCallback")
|
|
})
|
|
|
|
thr, err := napi.CreateThreadsafeFunction(env, jsFunc, jsEnd, callJSCallback, "thr", 0, 1, nil)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
export.Set("thr", thr)
|
|
}
|
|
|
|
func main() {}
|