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