src.dualinventive.com/go/devsim/simulator/js/publish.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
}