mlsw_wasm.mx raw

   1  //go:build wasm
   2  //:build wasm
   3  
   4  package mlsw
   5  
   6  import (
   7  	"git.smesh.lol/smesh/web/common/jsbridge/callback"
   8  	"unsafe"
   9  )
  10  
  11  //:wasmimport bridge mlsw_send
  12  func wasmSend(ptr *byte, length int32, cap int32)
  13  
  14  //:wasmimport bridge mlsw_on_message
  15  func wasmOnMessage(cbID int32)
  16  
  17  //:wasmimport bridge mlsw_worker_on_message
  18  func wasmWorkerOnMessage(cbID int32)
  19  
  20  //:wasmimport bridge mlsw_worker_post
  21  func wasmWorkerPost(ptr *byte, length int32, cap int32)
  22  
  23  //:wasmimport bridge mlsw_worker_set_timeout
  24  func wasmWorkerSetTimeout(ms int32, cbID int32) (n int32)
  25  
  26  //:wasmimport bridge mlsw_worker_clear_timeout
  27  func wasmWorkerClearTimeout(handle int32)
  28  
  29  //:wasmimport bridge mlsw_worker_now_seconds
  30  func wasmWorkerNowSeconds() (n int64)
  31  
  32  func Send(msg string) {
  33  	wasmSend(unsafe.StringData(msg), int32(len(msg)), int32(len(msg)))
  34  }
  35  func OnMessage(fn func(msg string)) { wasmOnMessage(callback.RegisterS(fn)) }
  36  func WorkerOnMessage(fn func(msg string)) { wasmWorkerOnMessage(callback.RegisterS(fn)) }
  37  func WorkerPost(msg string) {
  38  	wasmWorkerPost(unsafe.StringData(msg), int32(len(msg)), int32(len(msg)))
  39  }
  40  func WorkerSetTimeout(ms int32, fn func()) (n int32) {
  41  	return wasmWorkerSetTimeout(ms, callback.Register0Once(fn))
  42  }
  43  func WorkerClearTimeout(handle int32) { wasmWorkerClearTimeout(handle) }
  44  func WorkerNowSeconds() (n int64) { return wasmWorkerNowSeconds() }
  45