34 lines
681 B
Go
34 lines
681 B
Go
package js
|
|
|
|
import (
|
|
"github.com/dop251/goja"
|
|
"src.dualinventive.com/go/dinet/ditime"
|
|
"src.dualinventive.com/go/dinet/rpc"
|
|
)
|
|
|
|
func (s *Simulator) publish(call goja.FunctionCall) goja.Value {
|
|
var msg rpc.Msg
|
|
|
|
msg.Type = rpc.MsgTypePublish
|
|
msg.Time = ditime.Now()
|
|
msg.ClassMethod = rpc.ClassMethod(call.Argument(0).String())
|
|
|
|
if msg.ClassMethod == "" {
|
|
// TODO: Error or invalid classmethod
|
|
return nil
|
|
}
|
|
|
|
switch data := call.Argument(1).Export().(type) {
|
|
case map[string]interface{}:
|
|
msg.Result = rpc.NewResult([]interface{}{data})
|
|
case []interface{}:
|
|
msg.Result = rpc.NewResult(data)
|
|
}
|
|
|
|
err := s.m.Send(&msg)
|
|
if err != nil {
|
|
s.m.Error(err)
|
|
}
|
|
return nil
|
|
}
|