55
66import { localize } from 'vs/nls' ;
77import { URI } from 'vs/base/common/uri' ;
8- import { VSBuffer , newWriteableBufferStream , VSBufferReadableStream } from 'vs/base/common/buffer' ;
8+ import { VSBuffer } from 'vs/base/common/buffer' ;
99import { CancellationToken } from 'vs/base/common/cancellation' ;
1010import { IFileSystemProviderWithOpenReadWriteCloseCapability , FileReadStreamOptions , createFileSystemProviderError , FileSystemProviderErrorCode , ensureFileSystemProviderError } from 'vs/platform/files/common/files' ;
1111import { canceled } from 'vs/base/common/errors' ;
12- import { IErrorTransformer , IDataTransformer , ReadableStream , WriteableStream , newWriteableStream } from 'vs/base/common/stream' ;
12+ import { IErrorTransformer , IDataTransformer , WriteableStream } from 'vs/base/common/stream' ;
1313
1414export interface ICreateReadStreamOptions extends FileReadStreamOptions {
1515
@@ -24,39 +24,33 @@ export interface ICreateReadStreamOptions extends FileReadStreamOptions {
2424 errorTransformer ?: IErrorTransformer ;
2525}
2626
27- export function createVSBufferReadStream ( provider : IFileSystemProviderWithOpenReadWriteCloseCapability , resource : URI , options : ICreateReadStreamOptions , token ?: CancellationToken ) : VSBufferReadableStream {
28- const stream = newWriteableBufferStream ( ) ;
29-
30- readFileIntoStream ( provider , resource , stream , data => data , options , token ) ;
31-
32- return stream ;
33- }
34-
35- export function createUint8ArrayReadStream ( provider : IFileSystemProviderWithOpenReadWriteCloseCapability , resource : URI , options : ICreateReadStreamOptions , token ?: CancellationToken ) : ReadableStream < Uint8Array > {
36- const stream = newWriteableStream < Uint8Array > ( data => VSBuffer . concat ( data . map ( data => VSBuffer . wrap ( data ) ) ) . buffer ) ;
37-
38- readFileIntoStream ( provider , resource , stream , data => data . buffer , options , token ) ;
39-
40- return stream ;
41- }
42-
43- async function readFileIntoStream < T > ( provider : IFileSystemProviderWithOpenReadWriteCloseCapability , resource : URI , stream : WriteableStream < T > , transformer : IDataTransformer < VSBuffer , T > , options : ICreateReadStreamOptions , token ?: CancellationToken ) : Promise < void > {
27+ /**
28+ * A helper to read a file from a provider with open/read/close capability into a stream.
29+ */
30+ export async function readFileIntoStream < T > (
31+ provider : IFileSystemProviderWithOpenReadWriteCloseCapability ,
32+ resource : URI ,
33+ target : WriteableStream < T > ,
34+ transformer : IDataTransformer < VSBuffer , T > ,
35+ options : ICreateReadStreamOptions ,
36+ token : CancellationToken
37+ ) : Promise < void > {
4438 let error : Error | undefined = undefined ;
4539
4640 try {
47- await doReadFileIntoStream ( provider , resource , stream , transformer , options , token ) ;
41+ await doReadFileIntoStream ( provider , resource , target , transformer , options , token ) ;
4842 } catch ( err ) {
4943 error = err ;
5044 } finally {
5145 if ( error && options . errorTransformer ) {
5246 error = options . errorTransformer ( error ) ;
5347 }
5448
55- stream . end ( error ) ;
49+ target . end ( error ) ;
5650 }
5751}
5852
59- async function doReadFileIntoStream < T > ( provider : IFileSystemProviderWithOpenReadWriteCloseCapability , resource : URI , stream : WriteableStream < T > , transformer : IDataTransformer < VSBuffer , T > , options : ICreateReadStreamOptions , token ? : CancellationToken ) : Promise < void > {
53+ async function doReadFileIntoStream < T > ( provider : IFileSystemProviderWithOpenReadWriteCloseCapability , resource : URI , target : WriteableStream < T > , transformer : IDataTransformer < VSBuffer , T > , options : ICreateReadStreamOptions , token : CancellationToken ) : Promise < void > {
6054
6155 // Check for cancellation
6256 throwIfCancelled ( token ) ;
@@ -91,7 +85,7 @@ async function doReadFileIntoStream<T>(provider: IFileSystemProviderWithOpenRead
9185
9286 // when buffer full, create a new one and emit it through stream
9387 if ( posInBuffer === buffer . byteLength ) {
94- stream . write ( transformer ( buffer ) ) ;
88+ target . write ( transformer ( buffer ) ) ;
9589
9690 buffer = VSBuffer . alloc ( Math . min ( options . bufferSize , typeof allowedRemainingBytes === 'number' ? allowedRemainingBytes : options . bufferSize ) ) ;
9791
@@ -106,7 +100,7 @@ async function doReadFileIntoStream<T>(provider: IFileSystemProviderWithOpenRead
106100 lastChunkLength = Math . min ( posInBuffer , allowedRemainingBytes ) ;
107101 }
108102
109- stream . write ( transformer ( buffer . slice ( 0 , lastChunkLength ) ) ) ;
103+ target . write ( transformer ( buffer . slice ( 0 , lastChunkLength ) ) ) ;
110104 }
111105 } catch ( error ) {
112106 throw ensureFileSystemProviderError ( error ) ;
@@ -115,8 +109,8 @@ async function doReadFileIntoStream<T>(provider: IFileSystemProviderWithOpenRead
115109 }
116110}
117111
118- function throwIfCancelled ( token ? : CancellationToken ) : boolean {
119- if ( token && token . isCancellationRequested ) {
112+ function throwIfCancelled ( token : CancellationToken ) : boolean {
113+ if ( token . isCancellationRequested ) {
120114 throw canceled ( ) ;
121115 }
122116
0 commit comments