relayproxy_wasm.mx raw
1 //go:build wasm
2 //:build wasm
3
4 package relayproxy
5
6 import (
7 "git.smesh.lol/smesh/web/common/jsbridge/callback"
8 "unsafe"
9 )
10
11 // === Consumer-side ===
12
13 //:wasmimport bridge relayproxy_send
14 func wasmSend(ptr *byte, length int32, cap int32)
15
16 //:wasmimport bridge relayproxy_on_message
17 func wasmOnMessage(cbID int32)
18
19 func Send(msg string) {
20 wasmSend(unsafe.StringData(msg), int32(len(msg)), int32(len(msg)))
21 }
22
23 func OnMessage(fn func(msg string)) {
24 wasmOnMessage(callback.RegisterS(fn))
25 }
26
27 // === Worker-internal ===
28
29 //:wasmimport bridge relayproxy_worker_on_message
30 func wasmWorkerOnMessage(cbID int32)
31
32 //:wasmimport bridge relayproxy_worker_post
33 func wasmWorkerPost(ptr *byte, length int32, cap int32)
34
35 func WorkerOnMessage(fn func(msg string)) {
36 wasmWorkerOnMessage(callback.RegisterS(fn))
37 }
38
39 func WorkerPost(msg string) {
40 wasmWorkerPost(unsafe.StringData(msg), int32(len(msg)), int32(len(msg)))
41 }
42
43 //:wasmimport bridge relayproxy_worker_set_timeout
44 func wasmWorkerSetTimeout(ms int32, cbID int32) (n int32)
45
46 //:wasmimport bridge relayproxy_worker_clear_timeout
47 func wasmWorkerClearTimeout(handle int32)
48
49 func WorkerSetTimeout(ms int32, fn func()) (n int32) {
50 return wasmWorkerSetTimeout(ms, callback.Register0Once(fn))
51 }
52
53 func WorkerClearTimeout(handle int32) { wasmWorkerClearTimeout(handle) }
54
55 //:wasmimport bridge relayproxy_worker_now_seconds
56 func wasmWorkerNowSeconds() (n int64)
57
58 func WorkerNowSeconds() (n int64) { return wasmWorkerNowSeconds() }
59