提交 11f72446 编写于 作者: J Johannes Rieken

strict null streams, #67775

上级 77b61a1e
...@@ -791,6 +791,7 @@ ...@@ -791,6 +791,7 @@
"./vs/workbench/services/extensions/node/rpcProtocol.ts", "./vs/workbench/services/extensions/node/rpcProtocol.ts",
"./vs/workbench/services/extensions/test/node/rpcProtocol.test.ts", "./vs/workbench/services/extensions/test/node/rpcProtocol.test.ts",
"./vs/workbench/services/files/electron-browser/encoding.ts", "./vs/workbench/services/files/electron-browser/encoding.ts",
"./vs/workbench/services/files/electron-browser/streams.ts",
"./vs/workbench/services/files/node/watcher/common.ts", "./vs/workbench/services/files/node/watcher/common.ts",
"./vs/workbench/services/files/node/watcher/nsfw/nsfwWatcherService.ts", "./vs/workbench/services/files/node/watcher/nsfw/nsfwWatcherService.ts",
"./vs/workbench/services/files/node/watcher/nsfw/test/nsfwWatcherService.test.ts", "./vs/workbench/services/files/node/watcher/nsfw/test/nsfwWatcherService.test.ts",
...@@ -891,4 +892,4 @@ ...@@ -891,4 +892,4 @@
"exclude": [ "exclude": [
"./typings/require-monaco.d.ts" "./typings/require-monaco.d.ts"
] ]
} }
\ No newline at end of file
...@@ -31,7 +31,7 @@ function createSimpleWritable(provider: IFileSystemProvider, resource: URI, opts ...@@ -31,7 +31,7 @@ function createSimpleWritable(provider: IFileSystemProvider, resource: URI, opts
} }
end() { end() {
// todo@joh - end might have another chunk... // todo@joh - end might have another chunk...
provider.writeFile(resource, Buffer.concat(this._chunks), opts).then(_ => { provider.writeFile!(resource, Buffer.concat(this._chunks), opts).then(_ => {
super.end(); super.end();
}, err => { }, err => {
this.emit('error', err); this.emit('error', err);
...@@ -50,9 +50,9 @@ function createWritable(provider: IFileSystemProvider, resource: URI, opts: File ...@@ -50,9 +50,9 @@ function createWritable(provider: IFileSystemProvider, resource: URI, opts: File
async _write(chunk: Buffer, encoding, callback: Function) { async _write(chunk: Buffer, encoding, callback: Function) {
try { try {
if (typeof this._fd !== 'number') { if (typeof this._fd !== 'number') {
this._fd = await provider.open(resource, { create: true }); this._fd = await provider.open!(resource, { create: true });
} }
let bytesWritten = await provider.write(this._fd, this._pos, chunk, 0, chunk.length); let bytesWritten = await provider.write!(this._fd, this._pos, chunk, 0, chunk.length);
this._pos += bytesWritten; this._pos += bytesWritten;
callback(); callback();
} catch (err) { } catch (err) {
...@@ -61,9 +61,9 @@ function createWritable(provider: IFileSystemProvider, resource: URI, opts: File ...@@ -61,9 +61,9 @@ function createWritable(provider: IFileSystemProvider, resource: URI, opts: File
} }
_final(callback: (err?: any) => any) { _final(callback: (err?: any) => any) {
if (typeof this._fd !== 'number') { if (typeof this._fd !== 'number') {
provider.open(resource, { create: true }).then(fd => provider.close(fd)).finally(callback); provider.open!(resource, { create: true }).then(fd => provider.close!(fd)).finally(callback);
} else { } else {
provider.close(this._fd).finally(callback); provider.close!(this._fd).finally(callback);
} }
} }
}; };
...@@ -85,20 +85,20 @@ function createReadable(provider: IFileSystemProvider, resource: URI, position: ...@@ -85,20 +85,20 @@ function createReadable(provider: IFileSystemProvider, resource: URI, position:
_pos: number = position; _pos: number = position;
_reading: boolean = false; _reading: boolean = false;
async _read(size?: number) { async _read(size: number = 2 ** 10) {
if (this._reading) { if (this._reading) {
return; return;
} }
this._reading = true; this._reading = true;
try { try {
if (typeof this._fd !== 'number') { if (typeof this._fd !== 'number') {
this._fd = await provider.open(resource, { create: false }); this._fd = await provider.open!(resource, { create: false });
} }
while (this._reading) { while (this._reading) {
let buffer = Buffer.allocUnsafe(size); let buffer = Buffer.allocUnsafe(size);
let bytesRead = await provider.read(this._fd, this._pos, buffer, 0, buffer.length); let bytesRead = await provider.read!(this._fd, this._pos, buffer, 0, buffer.length);
if (bytesRead === 0) { if (bytesRead === 0) {
await provider.close(this._fd); await provider.close!(this._fd);
this._reading = false; this._reading = false;
this.push(null); this.push(null);
} else { } else {
...@@ -113,7 +113,7 @@ function createReadable(provider: IFileSystemProvider, resource: URI, position: ...@@ -113,7 +113,7 @@ function createReadable(provider: IFileSystemProvider, resource: URI, position:
} }
_destroy(_err: any, callback: (err?: any) => any) { _destroy(_err: any, callback: (err?: any) => any) {
if (typeof this._fd === 'number') { if (typeof this._fd === 'number') {
provider.close(this._fd).then(callback, callback); provider.close!(this._fd).then(callback, callback);
} }
} }
}; };
...@@ -126,7 +126,7 @@ function createSimpleReadable(provider: IFileSystemProvider, resource: URI, posi ...@@ -126,7 +126,7 @@ function createSimpleReadable(provider: IFileSystemProvider, resource: URI, posi
if (this._readOperation) { if (this._readOperation) {
return; return;
} }
this._readOperation = provider.readFile(resource).then(data => { this._readOperation = provider.readFile!(resource).then(data => {
this.push(data.slice(position)); this.push(data.slice(position));
this.push(null); this.push(null);
}, err => { }, err => {
...@@ -141,7 +141,7 @@ export function createReadableOfSnapshot(snapshot: ITextSnapshot): Readable { ...@@ -141,7 +141,7 @@ export function createReadableOfSnapshot(snapshot: ITextSnapshot): Readable {
return new Readable({ return new Readable({
read: function () { read: function () {
try { try {
let chunk: string; let chunk: string | null = null;
let canPush = true; let canPush = true;
// Push all chunks as long as we can push and as long as // Push all chunks as long as we can push and as long as
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册