MCPcopy Create free account
hub / github.com/brimdata/super / readableStream

Function readableStream

book/super-example/main.go:112–131  ·  view source on GitHub ↗
(readable js.Value)

Source from the content-addressed store, hash-verified

110}
111
112func readableStream(readable js.Value) io.Reader {
113 pr, pw := io.Pipe()
114 go func() {
115 reader := readable.Call("getReader")
116 var buf []byte
117 for {
118 var ch chunk
119 if err := await(reader.Call("read"), &ch); ch.Done || err != nil {
120 pw.CloseWithError(err)
121 return
122 }
123 n := ch.Value.Length()
124 buf = slices.Grow(buf, n)
125 b := buf[:n]
126 js.CopyBytesToGo(b, ch.Value)
127 pw.Write(b)
128 }
129 }()
130 return pr
131}
132
133func await(prom js.Value, v interface{}) error {
134 err := make(chan error)

Callers 1

runFunction · 0.85

Calls 5

awaitFunction · 0.85
LengthMethod · 0.80
GrowMethod · 0.80
CallMethod · 0.65
WriteMethod · 0.65

Tested by

no test coverage detected