提交 9be61bb1 编写于 作者: J Johannes Rieken

debt - use Thenable in ExtHostFileSystemShape and in FileSystemProvider

上级 efd8f4a4
...@@ -198,21 +198,21 @@ export interface IFileSystemProvider { ...@@ -198,21 +198,21 @@ export interface IFileSystemProvider {
onDidChangeFile: Event<IFileChange[]>; onDidChangeFile: Event<IFileChange[]>;
watch(resource: URI, opts: IWatchOptions): IDisposable; watch(resource: URI, opts: IWatchOptions): IDisposable;
stat(resource: URI): TPromise<IStat>; stat(resource: URI): Thenable<IStat>;
mkdir(resource: URI): TPromise<void>; mkdir(resource: URI): Thenable<void>;
readdir(resource: URI): TPromise<[string, FileType][]>; readdir(resource: URI): Thenable<[string, FileType][]>;
delete(resource: URI, opts: FileDeleteOptions): TPromise<void>; delete(resource: URI, opts: FileDeleteOptions): Thenable<void>;
rename(from: URI, to: URI, opts: FileOverwriteOptions): TPromise<void>; rename(from: URI, to: URI, opts: FileOverwriteOptions): Thenable<void>;
copy?(from: URI, to: URI, opts: FileOverwriteOptions): TPromise<void>; copy?(from: URI, to: URI, opts: FileOverwriteOptions): Thenable<void>;
readFile?(resource: URI): TPromise<Uint8Array>; readFile?(resource: URI): Thenable<Uint8Array>;
writeFile?(resource: URI, content: Uint8Array, opts: FileWriteOptions): TPromise<void>; writeFile?(resource: URI, content: Uint8Array, opts: FileWriteOptions): Thenable<void>;
open?(resource: URI): TPromise<number>; open?(resource: URI): Thenable<number>;
close?(fd: number): TPromise<void>; close?(fd: number): Thenable<void>;
read?(fd: number, pos: number, data: Uint8Array, offset: number, length: number): TPromise<number>; read?(fd: number, pos: number, data: Uint8Array, offset: number, length: number): Thenable<number>;
write?(fd: number, pos: number, data: Uint8Array, offset: number, length: number): TPromise<number>; write?(fd: number, pos: number, data: Uint8Array, offset: number, length: number): Thenable<number>;
} }
export interface IFileSystemProviderRegistrationEvent { export interface IFileSystemProviderRegistrationEvent {
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
import { Emitter, Event } from 'vs/base/common/event'; import { Emitter, Event } from 'vs/base/common/event';
import { IDisposable, dispose, toDisposable } from 'vs/base/common/lifecycle'; import { IDisposable, dispose, toDisposable } from 'vs/base/common/lifecycle';
import { URI } from 'vs/base/common/uri'; import { URI } from 'vs/base/common/uri';
import { TPromise } from 'vs/base/common/winjs.base';
import { FileWriteOptions, FileSystemProviderCapabilities, IFileChange, IFileService, IFileSystemProvider, IStat, IWatchOptions, FileType, FileOverwriteOptions, FileDeleteOptions } from 'vs/platform/files/common/files'; import { FileWriteOptions, FileSystemProviderCapabilities, IFileChange, IFileService, IFileSystemProvider, IStat, IWatchOptions, FileType, FileOverwriteOptions, FileDeleteOptions } from 'vs/platform/files/common/files';
import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers'; import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers';
import { ExtHostContext, ExtHostFileSystemShape, IExtHostContext, IFileChangeDto, MainContext, MainThreadFileSystemShape } from '../node/extHost.protocol'; import { ExtHostContext, ExtHostFileSystemShape, IExtHostContext, IFileChangeDto, MainContext, MainThreadFileSystemShape } from '../node/extHost.protocol';
...@@ -96,53 +95,53 @@ class RemoteFileSystemProvider implements IFileSystemProvider { ...@@ -96,53 +95,53 @@ class RemoteFileSystemProvider implements IFileSystemProvider {
return Buffer.isBuffer(data) ? data : Buffer.from(data.buffer, data.byteOffset, data.byteLength); return Buffer.isBuffer(data) ? data : Buffer.from(data.buffer, data.byteOffset, data.byteLength);
} }
stat(resource: URI): TPromise<IStat> { stat(resource: URI): Thenable<IStat> {
return this._proxy.$stat(this._handle, resource).then(undefined, err => { return this._proxy.$stat(this._handle, resource).then(undefined, err => {
throw err; throw err;
}); });
} }
readFile(resource: URI): TPromise<Uint8Array> { readFile(resource: URI): Thenable<Uint8Array> {
return this._proxy.$readFile(this._handle, resource); return this._proxy.$readFile(this._handle, resource);
} }
writeFile(resource: URI, content: Uint8Array, opts: FileWriteOptions): TPromise<void> { writeFile(resource: URI, content: Uint8Array, opts: FileWriteOptions): Thenable<void> {
return this._proxy.$writeFile(this._handle, resource, RemoteFileSystemProvider._asBuffer(content), opts); return this._proxy.$writeFile(this._handle, resource, RemoteFileSystemProvider._asBuffer(content), opts);
} }
delete(resource: URI, opts: FileDeleteOptions): TPromise<void> { delete(resource: URI, opts: FileDeleteOptions): Thenable<void> {
return this._proxy.$delete(this._handle, resource, opts); return this._proxy.$delete(this._handle, resource, opts);
} }
mkdir(resource: URI): TPromise<void> { mkdir(resource: URI): Thenable<void> {
return this._proxy.$mkdir(this._handle, resource); return this._proxy.$mkdir(this._handle, resource);
} }
readdir(resource: URI): TPromise<[string, FileType][]> { readdir(resource: URI): Thenable<[string, FileType][]> {
return this._proxy.$readdir(this._handle, resource); return this._proxy.$readdir(this._handle, resource);
} }
rename(resource: URI, target: URI, opts: FileOverwriteOptions): TPromise<void> { rename(resource: URI, target: URI, opts: FileOverwriteOptions): Thenable<void> {
return this._proxy.$rename(this._handle, resource, target, opts); return this._proxy.$rename(this._handle, resource, target, opts);
} }
copy(resource: URI, target: URI, opts: FileOverwriteOptions): TPromise<void> { copy(resource: URI, target: URI, opts: FileOverwriteOptions): Thenable<void> {
return this._proxy.$copy(this._handle, resource, target, opts); return this._proxy.$copy(this._handle, resource, target, opts);
} }
open(resource: URI): TPromise<number> { open(resource: URI): Thenable<number> {
return this._proxy.$open(this._handle, resource); return this._proxy.$open(this._handle, resource);
} }
close(fd: number): TPromise<void> { close(fd: number): Thenable<void> {
return this._proxy.$close(this._handle, fd); return this._proxy.$close(this._handle, fd);
} }
read(fd: number, pos: number, data: Uint8Array, offset: number, length: number): TPromise<number> { read(fd: number, pos: number, data: Uint8Array, offset: number, length: number): Thenable<number> {
return this._proxy.$read(this._handle, fd, pos, RemoteFileSystemProvider._asBuffer(data), offset, length); return this._proxy.$read(this._handle, fd, pos, RemoteFileSystemProvider._asBuffer(data), offset, length);
} }
write(fd: number, pos: number, data: Uint8Array, offset: number, length: number): TPromise<number> { write(fd: number, pos: number, data: Uint8Array, offset: number, length: number): Thenable<number> {
return this._proxy.$write(this._handle, fd, pos, RemoteFileSystemProvider._asBuffer(data), offset, length); return this._proxy.$write(this._handle, fd, pos, RemoteFileSystemProvider._asBuffer(data), offset, length);
} }
} }
...@@ -681,20 +681,20 @@ export interface ExtHostWorkspaceShape { ...@@ -681,20 +681,20 @@ export interface ExtHostWorkspaceShape {
} }
export interface ExtHostFileSystemShape { export interface ExtHostFileSystemShape {
$stat(handle: number, resource: UriComponents): TPromise<IStat>; $stat(handle: number, resource: UriComponents): Thenable<IStat>;
$readdir(handle: number, resource: UriComponents): TPromise<[string, FileType][]>; $readdir(handle: number, resource: UriComponents): Thenable<[string, FileType][]>;
$readFile(handle: number, resource: UriComponents): TPromise<Buffer>; $readFile(handle: number, resource: UriComponents): Thenable<Buffer>;
$writeFile(handle: number, resource: UriComponents, content: Buffer, opts: FileWriteOptions): TPromise<void>; $writeFile(handle: number, resource: UriComponents, content: Buffer, opts: FileWriteOptions): Thenable<void>;
$rename(handle: number, resource: UriComponents, target: UriComponents, opts: FileOverwriteOptions): TPromise<void>; $rename(handle: number, resource: UriComponents, target: UriComponents, opts: FileOverwriteOptions): Thenable<void>;
$copy(handle: number, resource: UriComponents, target: UriComponents, opts: FileOverwriteOptions): TPromise<void>; $copy(handle: number, resource: UriComponents, target: UriComponents, opts: FileOverwriteOptions): Thenable<void>;
$mkdir(handle: number, resource: UriComponents): TPromise<void>; $mkdir(handle: number, resource: UriComponents): Thenable<void>;
$delete(handle: number, resource: UriComponents, opts: FileDeleteOptions): TPromise<void>; $delete(handle: number, resource: UriComponents, opts: FileDeleteOptions): Thenable<void>;
$watch(handle: number, session: number, resource: UriComponents, opts: IWatchOptions): void; $watch(handle: number, session: number, resource: UriComponents, opts: IWatchOptions): void;
$unwatch(handle: number, session: number): void; $unwatch(handle: number, session: number): void;
$open(handle: number, resource: UriComponents): TPromise<number>; $open(handle: number, resource: UriComponents): Thenable<number>;
$close(handle: number, fd: number): TPromise<void>; $close(handle: number, fd: number): Thenable<void>;
$read(handle: number, fd: number, pos: number, data: Buffer, offset: number, length: number): TPromise<number>; $read(handle: number, fd: number, pos: number, data: Buffer, offset: number, length: number): Thenable<number>;
$write(handle: number, fd: number, pos: number, data: Buffer, offset: number, length: number): TPromise<number>; $write(handle: number, fd: number, pos: number, data: Buffer, offset: number, length: number): Thenable<number>;
} }
export interface ExtHostSearchShape { export interface ExtHostSearchShape {
......
...@@ -5,12 +5,10 @@ ...@@ -5,12 +5,10 @@
'use strict'; 'use strict';
import { URI, UriComponents } from 'vs/base/common/uri'; import { URI, UriComponents } from 'vs/base/common/uri';
import { TPromise } from 'vs/base/common/winjs.base';
import { MainContext, IMainContext, ExtHostFileSystemShape, MainThreadFileSystemShape, IFileChangeDto } from './extHost.protocol'; import { MainContext, IMainContext, ExtHostFileSystemShape, MainThreadFileSystemShape, IFileChangeDto } from './extHost.protocol';
import * as vscode from 'vscode'; import * as vscode from 'vscode';
import * as files from 'vs/platform/files/common/files'; import * as files from 'vs/platform/files/common/files';
import { IDisposable, toDisposable } from 'vs/base/common/lifecycle'; import { IDisposable, toDisposable } from 'vs/base/common/lifecycle';
import { asWinJsPromise } from 'vs/base/common/async';
import { values } from 'vs/base/common/map'; import { values } from 'vs/base/common/map';
import { Range, FileChangeType } from 'vs/workbench/api/node/extHostTypes'; import { Range, FileChangeType } from 'vs/workbench/api/node/extHostTypes';
import { ExtHostLanguageFeatures } from 'vs/workbench/api/node/extHostLanguageFeatures'; import { ExtHostLanguageFeatures } from 'vs/workbench/api/node/extHostLanguageFeatures';
...@@ -156,47 +154,43 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { ...@@ -156,47 +154,43 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape {
return { type, ctime, mtime, size }; return { type, ctime, mtime, size };
} }
$stat(handle: number, resource: UriComponents): TPromise<files.IStat> { $stat(handle: number, resource: UriComponents): Promise<files.IStat> {
return asWinJsPromise(() => this._fsProvider.get(handle).stat(URI.revive(resource))).then(ExtHostFileSystem._asIStat); return Promise.resolve(this._fsProvider.get(handle).stat(URI.revive(resource))).then(ExtHostFileSystem._asIStat);
} }
$readdir(handle: number, resource: UriComponents): TPromise<[string, files.FileType][]> { $readdir(handle: number, resource: UriComponents): Promise<[string, files.FileType][]> {
return asWinJsPromise(() => this._fsProvider.get(handle).readDirectory(URI.revive(resource))); return Promise.resolve(this._fsProvider.get(handle).readDirectory(URI.revive(resource)));
} }
$readFile(handle: number, resource: UriComponents): TPromise<Buffer> { $readFile(handle: number, resource: UriComponents): Promise<Buffer> {
return asWinJsPromise(() => { return Promise.resolve(this._fsProvider.get(handle).readFile(URI.revive(resource))).then(data => {
return this._fsProvider.get(handle).readFile(URI.revive(resource));
}).then(data => {
return Buffer.isBuffer(data) ? data : Buffer.from(data.buffer, data.byteOffset, data.byteLength); return Buffer.isBuffer(data) ? data : Buffer.from(data.buffer, data.byteOffset, data.byteLength);
}); });
} }
$writeFile(handle: number, resource: UriComponents, content: Buffer, opts: files.FileWriteOptions): TPromise<void> { $writeFile(handle: number, resource: UriComponents, content: Buffer, opts: files.FileWriteOptions): Promise<void> {
return asWinJsPromise(() => this._fsProvider.get(handle).writeFile(URI.revive(resource), content, opts)); return Promise.resolve(this._fsProvider.get(handle).writeFile(URI.revive(resource), content, opts));
} }
$delete(handle: number, resource: UriComponents, opts: files.FileDeleteOptions): TPromise<void> { $delete(handle: number, resource: UriComponents, opts: files.FileDeleteOptions): Promise<void> {
return asWinJsPromise(() => this._fsProvider.get(handle).delete(URI.revive(resource), opts)); return Promise.resolve(this._fsProvider.get(handle).delete(URI.revive(resource), opts));
} }
$rename(handle: number, oldUri: UriComponents, newUri: UriComponents, opts: files.FileOverwriteOptions): TPromise<void> { $rename(handle: number, oldUri: UriComponents, newUri: UriComponents, opts: files.FileOverwriteOptions): Promise<void> {
return asWinJsPromise(() => this._fsProvider.get(handle).rename(URI.revive(oldUri), URI.revive(newUri), opts)); return Promise.resolve(this._fsProvider.get(handle).rename(URI.revive(oldUri), URI.revive(newUri), opts));
} }
$copy(handle: number, oldUri: UriComponents, newUri: UriComponents, opts: files.FileOverwriteOptions): TPromise<void> { $copy(handle: number, oldUri: UriComponents, newUri: UriComponents, opts: files.FileOverwriteOptions): Promise<void> {
return asWinJsPromise(() => this._fsProvider.get(handle).copy(URI.revive(oldUri), URI.revive(newUri), opts)); return Promise.resolve(this._fsProvider.get(handle).copy(URI.revive(oldUri), URI.revive(newUri), opts));
} }
$mkdir(handle: number, resource: UriComponents): TPromise<void> { $mkdir(handle: number, resource: UriComponents): Promise<void> {
return asWinJsPromise(() => this._fsProvider.get(handle).createDirectory(URI.revive(resource))); return Promise.resolve(this._fsProvider.get(handle).createDirectory(URI.revive(resource)));
} }
$watch(handle: number, session: number, resource: UriComponents, opts: files.IWatchOptions): void { $watch(handle: number, session: number, resource: UriComponents, opts: files.IWatchOptions): void {
asWinJsPromise(() => {
let subscription = this._fsProvider.get(handle).watch(URI.revive(resource), opts); let subscription = this._fsProvider.get(handle).watch(URI.revive(resource), opts);
this._watches.set(session, subscription); this._watches.set(session, subscription);
});
} }
$unwatch(session: number): void { $unwatch(session: number): void {
...@@ -207,20 +201,20 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { ...@@ -207,20 +201,20 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape {
} }
} }
$open(handle: number, resource: UriComponents): TPromise<number> { $open(handle: number, resource: UriComponents): Promise<number> {
return asWinJsPromise(() => this._fsProvider.get(handle).open(URI.revive(resource))); return Promise.resolve(this._fsProvider.get(handle).open(URI.revive(resource)));
} }
$close(handle: number, fd: number): TPromise<void> { $close(handle: number, fd: number): Promise<void> {
return asWinJsPromise(() => this._fsProvider.get(handle).close(fd)); return Promise.resolve(this._fsProvider.get(handle).close(fd));
} }
$read(handle: number, fd: number, pos: number, data: Buffer, offset: number, length: number): TPromise<number> { $read(handle: number, fd: number, pos: number, data: Buffer, offset: number, length: number): Promise<number> {
return asWinJsPromise(() => this._fsProvider.get(handle).read(fd, pos, data, offset, length)); return Promise.resolve(this._fsProvider.get(handle).read(fd, pos, data, offset, length));
} }
$write(handle: number, fd: number, pos: number, data: Buffer, offset: number, length: number): TPromise<number> { $write(handle: number, fd: number, pos: number, data: Buffer, offset: number, length: number): Promise<number> {
return asWinJsPromise(() => this._fsProvider.get(handle).write(fd, pos, data, offset, length)); return Promise.resolve(this._fsProvider.get(handle).write(fd, pos, data, offset, length));
} }
} }
...@@ -38,7 +38,7 @@ class TypeOnlyStat implements IStat { ...@@ -38,7 +38,7 @@ class TypeOnlyStat implements IStat {
size: number = 0; size: number = 0;
} }
function toIFileStat(provider: IFileSystemProvider, tuple: [URI, IStat], recurse?: (tuple: [URI, IStat]) => boolean): TPromise<IFileStat> { function toIFileStat(provider: IFileSystemProvider, tuple: [URI, IStat], recurse?: (tuple: [URI, IStat]) => boolean): Thenable<IFileStat> {
const [resource, stat] = tuple; const [resource, stat] = tuple;
const fileStat: IFileStat = { const fileStat: IFileStat = {
resource, resource,
...@@ -72,7 +72,7 @@ function toIFileStat(provider: IFileSystemProvider, tuple: [URI, IStat], recurse ...@@ -72,7 +72,7 @@ function toIFileStat(provider: IFileSystemProvider, tuple: [URI, IStat], recurse
return TPromise.as(fileStat); return TPromise.as(fileStat);
} }
export function toDeepIFileStat(provider: IFileSystemProvider, tuple: [URI, IStat], to: URI[]): TPromise<IFileStat> { export function toDeepIFileStat(provider: IFileSystemProvider, tuple: [URI, IStat], to: URI[]): Thenable<IFileStat> {
const trie = TernarySearchTree.forPaths<true>(); const trie = TernarySearchTree.forPaths<true>();
trie.set(tuple[0].toString(), true); trie.set(tuple[0].toString(), true);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册