...
1 package playwright
2
3 import (
4 "encoding/json"
5 "log"
6 )
7
8 type jsonPipe struct {
9 channelOwner
10 }
11
12 func (j *jsonPipe) Send(message map[string]interface{}) error {
13 _, err := j.channel.Send("send", map[string]interface{}{
14 "message": message})
15 return err
16 }
17
18 func (j *jsonPipe) Close() error {
19 _, err := j.channel.Send("close")
20 return err
21 }
22 func newJsonPipe(parent *channelOwner, objectType string, guid string, initializer map[string]interface{}) *jsonPipe {
23 j := &jsonPipe{}
24 j.createChannelOwner(j, parent, objectType, guid, initializer)
25 j.channel.On("message", func(ev map[string]interface{}) {
26 m, err := json.Marshal(ev["message"])
27 if err != nil {
28 log.Fatal(err)
29 }
30 var msg message
31 err = json.Unmarshal(m, &msg)
32 if err != nil {
33 log.Fatal(err)
34 }
35 j.Emit("message", &msg)
36 })
37 j.channel.On("closed", func() {
38 j.Emit("closed")
39 })
40 return j
41 }
42
View as plain text