mirror of
https://github.com/syumai/workers.git
synced 2025-03-10 17:29:11 +00:00
remove duplicated ConvertReadableStreamToReader func
This commit is contained in:
parent
a7c665301a
commit
85a1d52210
@ -58,7 +58,7 @@ func (sock *TCPSocket) init(ctx context.Context) {
|
|||||||
sock.SetDeadline(time.Now().Add(999999 * time.Hour))
|
sock.SetDeadline(time.Now().Add(999999 * time.Hour))
|
||||||
sock.writer = sock.socket.Get("writable").Call("getWriter")
|
sock.writer = sock.socket.Get("writable").Call("getWriter")
|
||||||
sock.reader = sock.socket.Get("readable").Call("getReader")
|
sock.reader = sock.socket.Get("readable").Call("getReader")
|
||||||
sock.rd = jsutil.ConvertReadableStreamToReader(sock.reader)
|
sock.rd = jsutil.ConvertStreamReaderToReader(sock.reader)
|
||||||
sock.ctx, sock.cn = context.WithCancel(ctx)
|
sock.ctx, sock.cn = context.WithCancel(ctx)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -7,38 +7,6 @@ import (
|
|||||||
"syscall/js"
|
"syscall/js"
|
||||||
)
|
)
|
||||||
|
|
||||||
// streamReaderToReader implements io.Reader sourced from ReadableStream
|
|
||||||
// https://developers.cloudflare.com/workers/runtime-apis/streams/readablestream/
|
|
||||||
type readableStreamToReader struct {
|
|
||||||
buf bytes.Buffer
|
|
||||||
streamReader js.Value
|
|
||||||
}
|
|
||||||
|
|
||||||
// Read reads bytes from ReadableStreamDefaultReader.
|
|
||||||
func (sr *readableStreamToReader) Read(p []byte) (n int, err error) {
|
|
||||||
if sr.buf.Len() == 0 {
|
|
||||||
promise, err := AwaitPromise(sr.streamReader.Call("read"))
|
|
||||||
if err != nil {
|
|
||||||
return 0, err
|
|
||||||
}
|
|
||||||
result := promise.Get("value")
|
|
||||||
chunk := make([]byte, result.Get("byteLength").Int())
|
|
||||||
_ = js.CopyBytesToGo(chunk, result)
|
|
||||||
_, err = sr.buf.Write(chunk)
|
|
||||||
if err != nil {
|
|
||||||
return 0, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return sr.buf.Read(p)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ConvertReadableStreamToReader converts ReadableStreamDefaultReader to io.Reader.
|
|
||||||
func ConvertReadableStreamToReader(sr js.Value) io.Reader {
|
|
||||||
return &readableStreamToReader{
|
|
||||||
streamReader: sr,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// streamReaderToReader implements io.Reader sourced from ReadableStreamDefaultReader.
|
// streamReaderToReader implements io.Reader sourced from ReadableStreamDefaultReader.
|
||||||
// - ReadableStreamDefaultReader: https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader
|
// - ReadableStreamDefaultReader: https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader
|
||||||
// - This implementation is based on: https://deno.land/std@0.139.0/streams/conversion.ts#L76
|
// - This implementation is based on: https://deno.land/std@0.139.0/streams/conversion.ts#L76
|
||||||
|
Loading…
x
Reference in New Issue
Block a user