remove duplicated ConvertReadableStreamToReader func

This commit is contained in:
syumai 2024-01-03 13:30:03 +09:00
parent a7c665301a
commit 85a1d52210
2 changed files with 1 additions and 33 deletions

View File

@ -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
} }

View File

@ -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