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