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