Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
ba4735d7
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ba4735d7
编写于
4月 10, 2019
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
debt - don't use Buffer in extHost-protocol
上级
34e305cc
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
34 addition
and
37 deletion
+34
-37
src/vs/workbench/api/browser/mainThreadFileSystem.ts
src/vs/workbench/api/browser/mainThreadFileSystem.ts
+5
-8
src/vs/workbench/api/common/extHost.protocol.ts
src/vs/workbench/api/common/extHost.protocol.ts
+7
-6
src/vs/workbench/api/common/extHostFileSystem.ts
src/vs/workbench/api/common/extHostFileSystem.ts
+10
-11
src/vs/workbench/api/node/extHostExtensionService.ts
src/vs/workbench/api/node/extHostExtensionService.ts
+5
-5
src/vs/workbench/services/extensions/common/rpcProtocol.ts
src/vs/workbench/services/extensions/common/rpcProtocol.ts
+4
-5
src/vs/workbench/services/extensions/electron-browser/extensionHostProcessManager.ts
...xtensions/electron-browser/extensionHostProcessManager.ts
+2
-1
src/vs/workbench/services/files/node/streams.ts
src/vs/workbench/services/files/node/streams.ts
+1
-1
未找到文件。
src/vs/workbench/api/browser/mainThreadFileSystem.ts
浏览文件 @
ba4735d7
...
...
@@ -10,6 +10,7 @@ import { FileWriteOptions, FileSystemProviderCapabilities, IFileChange, IFileSer
import
{
extHostNamedCustomer
}
from
'
vs/workbench/api/common/extHostCustomers
'
;
import
{
ExtHostContext
,
ExtHostFileSystemShape
,
IExtHostContext
,
IFileChangeDto
,
MainContext
,
MainThreadFileSystemShape
}
from
'
../common/extHost.protocol
'
;
import
{
ResourceLabelFormatter
,
ILabelService
}
from
'
vs/platform/label/common/label
'
;
import
{
VSBuffer
}
from
'
vs/base/common/buffer
'
;
@
extHostNamedCustomer
(
MainContext
.
MainThreadFileSystem
)
export
class
MainThreadFileSystem
implements
MainThreadFileSystemShape
{
...
...
@@ -105,10 +106,6 @@ class RemoteFileSystemProvider implements IFileSystemProvider {
// --- forwarding calls
private
static
_asBuffer
(
data
:
Uint8Array
):
Buffer
{
return
Buffer
.
isBuffer
(
data
)
?
data
:
Buffer
.
from
(
data
.
buffer
,
data
.
byteOffset
,
data
.
byteLength
);
}
stat
(
resource
:
URI
):
Promise
<
IStat
>
{
return
this
.
_proxy
.
$stat
(
this
.
_handle
,
resource
).
then
(
undefined
,
err
=>
{
throw
err
;
...
...
@@ -116,11 +113,11 @@ class RemoteFileSystemProvider implements IFileSystemProvider {
}
readFile
(
resource
:
URI
):
Promise
<
Uint8Array
>
{
return
this
.
_proxy
.
$readFile
(
this
.
_handle
,
resource
);
return
this
.
_proxy
.
$readFile
(
this
.
_handle
,
resource
)
.
then
(
buffer
=>
buffer
.
buffer
)
;
}
writeFile
(
resource
:
URI
,
content
:
Uint8Array
,
opts
:
FileWriteOptions
):
Promise
<
void
>
{
return
this
.
_proxy
.
$writeFile
(
this
.
_handle
,
resource
,
RemoteFileSystemProvider
.
_asBuffer
(
content
),
opts
);
return
this
.
_proxy
.
$writeFile
(
this
.
_handle
,
resource
,
VSBuffer
.
wrap
(
content
),
opts
);
}
delete
(
resource
:
URI
,
opts
:
FileDeleteOptions
):
Promise
<
void
>
{
...
...
@@ -153,12 +150,12 @@ class RemoteFileSystemProvider implements IFileSystemProvider {
read
(
fd
:
number
,
pos
:
number
,
data
:
Uint8Array
,
offset
:
number
,
length
:
number
):
Promise
<
number
>
{
return
this
.
_proxy
.
$read
(
this
.
_handle
,
fd
,
pos
,
length
).
then
(
readData
=>
{
data
.
set
(
readData
,
offset
);
data
.
set
(
readData
.
buffer
,
offset
);
return
readData
.
byteLength
;
});
}
write
(
fd
:
number
,
pos
:
number
,
data
:
Uint8Array
,
offset
:
number
,
length
:
number
):
Promise
<
number
>
{
return
this
.
_proxy
.
$write
(
this
.
_handle
,
fd
,
pos
,
Buffer
.
from
(
data
,
offset
,
length
));
return
this
.
_proxy
.
$write
(
this
.
_handle
,
fd
,
pos
,
VSBuffer
.
wrap
(
data
).
slice
(
offset
,
offset
+
length
));
}
}
src/vs/workbench/api/common/extHost.protocol.ts
浏览文件 @
ba4735d7
...
...
@@ -46,6 +46,7 @@ import * as codeInset from 'vs/workbench/contrib/codeinset/common/codeInset';
import
*
as
callHierarchy
from
'
vs/workbench/contrib/callHierarchy/common/callHierarchy
'
;
import
{
IRelativePattern
}
from
'
vs/base/common/glob
'
;
import
{
IRemoteConsoleLog
}
from
'
vs/base/common/console
'
;
import
{
VSBuffer
}
from
'
vs/base/common/buffer
'
;
export
interface
IEnvironment
{
isExtensionDevelopmentDebug
:
boolean
;
...
...
@@ -783,8 +784,8 @@ export interface ExtHostWorkspaceShape {
export
interface
ExtHostFileSystemShape
{
$stat
(
handle
:
number
,
resource
:
UriComponents
):
Promise
<
files
.
IStat
>
;
$readdir
(
handle
:
number
,
resource
:
UriComponents
):
Promise
<
[
string
,
files
.
FileType
][]
>
;
$readFile
(
handle
:
number
,
resource
:
UriComponents
):
Promise
<
Buffer
>
;
$writeFile
(
handle
:
number
,
resource
:
UriComponents
,
content
:
Buffer
,
opts
:
files
.
FileWriteOptions
):
Promise
<
void
>
;
$readFile
(
handle
:
number
,
resource
:
UriComponents
):
Promise
<
VS
Buffer
>
;
$writeFile
(
handle
:
number
,
resource
:
UriComponents
,
content
:
VS
Buffer
,
opts
:
files
.
FileWriteOptions
):
Promise
<
void
>
;
$rename
(
handle
:
number
,
resource
:
UriComponents
,
target
:
UriComponents
,
opts
:
files
.
FileOverwriteOptions
):
Promise
<
void
>
;
$copy
(
handle
:
number
,
resource
:
UriComponents
,
target
:
UriComponents
,
opts
:
files
.
FileOverwriteOptions
):
Promise
<
void
>
;
$mkdir
(
handle
:
number
,
resource
:
UriComponents
):
Promise
<
void
>
;
...
...
@@ -793,8 +794,8 @@ export interface ExtHostFileSystemShape {
$unwatch
(
handle
:
number
,
session
:
number
):
void
;
$open
(
handle
:
number
,
resource
:
UriComponents
,
opts
:
files
.
FileOpenOptions
):
Promise
<
number
>
;
$close
(
handle
:
number
,
fd
:
number
):
Promise
<
void
>
;
$read
(
handle
:
number
,
fd
:
number
,
pos
:
number
,
length
:
number
):
Promise
<
Buffer
>
;
$write
(
handle
:
number
,
fd
:
number
,
pos
:
number
,
data
:
Buffer
):
Promise
<
number
>
;
$read
(
handle
:
number
,
fd
:
number
,
pos
:
number
,
length
:
number
):
Promise
<
VS
Buffer
>
;
$write
(
handle
:
number
,
fd
:
number
,
pos
:
number
,
data
:
VS
Buffer
):
Promise
<
number
>
;
}
export
interface
ExtHostSearchShape
{
...
...
@@ -812,8 +813,8 @@ export interface ExtHostExtensionServiceShape {
$deltaExtensions
(
toAdd
:
IExtensionDescription
[],
toRemove
:
ExtensionIdentifier
[]):
Promise
<
void
>
;
$test_latency
(
n
:
number
):
Promise
<
number
>
;
$test_up
(
b
:
Buffer
):
Promise
<
number
>
;
$test_down
(
size
:
number
):
Promise
<
Buffer
>
;
$test_up
(
b
:
VS
Buffer
):
Promise
<
number
>
;
$test_down
(
size
:
number
):
Promise
<
VS
Buffer
>
;
}
export
interface
FileSystemEvents
{
...
...
src/vs/workbench/api/common/extHostFileSystem.ts
浏览文件 @
ba4735d7
...
...
@@ -16,6 +16,7 @@ import { ResourceLabelFormatter } from 'vs/platform/label/common/label';
import
{
State
,
StateMachine
,
LinkComputer
,
Edge
}
from
'
vs/editor/common/modes/linkComputer
'
;
import
{
commonPrefixLength
}
from
'
vs/base/common/strings
'
;
import
{
CharCode
}
from
'
vs/base/common/charCode
'
;
import
{
VSBuffer
}
from
'
vs/base/common/buffer
'
;
class
FsLinkProvider
{
...
...
@@ -229,14 +230,12 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape {
return
Promise
.
resolve
(
this
.
getProvider
(
handle
).
readDirectory
(
URI
.
revive
(
resource
)));
}
$readFile
(
handle
:
number
,
resource
:
UriComponents
):
Promise
<
Buffer
>
{
return
Promise
.
resolve
(
this
.
getProvider
(
handle
).
readFile
(
URI
.
revive
(
resource
))).
then
(
data
=>
{
return
Buffer
.
isBuffer
(
data
)
?
data
:
Buffer
.
from
(
data
.
buffer
,
data
.
byteOffset
,
data
.
byteLength
);
});
$readFile
(
handle
:
number
,
resource
:
UriComponents
):
Promise
<
VSBuffer
>
{
return
Promise
.
resolve
(
this
.
getProvider
(
handle
).
readFile
(
URI
.
revive
(
resource
))).
then
(
data
=>
VSBuffer
.
wrap
(
data
));
}
$writeFile
(
handle
:
number
,
resource
:
UriComponents
,
content
:
Buffer
,
opts
:
files
.
FileWriteOptions
):
Promise
<
void
>
{
return
Promise
.
resolve
(
this
.
getProvider
(
handle
).
writeFile
(
URI
.
revive
(
resource
),
content
,
opts
));
$writeFile
(
handle
:
number
,
resource
:
UriComponents
,
content
:
VS
Buffer
,
opts
:
files
.
FileWriteOptions
):
Promise
<
void
>
{
return
Promise
.
resolve
(
this
.
getProvider
(
handle
).
writeFile
(
URI
.
revive
(
resource
),
content
.
buffer
,
opts
));
}
$delete
(
handle
:
number
,
resource
:
UriComponents
,
opts
:
files
.
FileDeleteOptions
):
Promise
<
void
>
{
...
...
@@ -288,23 +287,23 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape {
return
Promise
.
resolve
(
provider
.
close
(
fd
));
}
$read
(
handle
:
number
,
fd
:
number
,
pos
:
number
,
length
:
number
):
Promise
<
Buffer
>
{
$read
(
handle
:
number
,
fd
:
number
,
pos
:
number
,
length
:
number
):
Promise
<
VS
Buffer
>
{
const
provider
=
this
.
getProvider
(
handle
);
if
(
!
provider
.
read
)
{
throw
new
Error
(
'
FileSystemProvider does not implement "read"
'
);
}
const
data
=
Buffer
.
allocUnsafe
(
length
);
return
Promise
.
resolve
(
provider
.
read
(
fd
,
pos
,
data
,
0
,
length
)).
then
(
read
=>
{
const
data
=
VSBuffer
.
alloc
(
length
);
return
Promise
.
resolve
(
provider
.
read
(
fd
,
pos
,
data
.
buffer
,
0
,
length
)).
then
(
read
=>
{
return
data
.
slice
(
0
,
read
);
// don't send zeros
});
}
$write
(
handle
:
number
,
fd
:
number
,
pos
:
number
,
data
:
Buffer
):
Promise
<
number
>
{
$write
(
handle
:
number
,
fd
:
number
,
pos
:
number
,
data
:
VS
Buffer
):
Promise
<
number
>
{
const
provider
=
this
.
getProvider
(
handle
);
if
(
!
provider
.
write
)
{
throw
new
Error
(
'
FileSystemProvider does not implement "write"
'
);
}
return
Promise
.
resolve
(
provider
.
write
(
fd
,
pos
,
data
,
0
,
data
.
l
ength
));
return
Promise
.
resolve
(
provider
.
write
(
fd
,
pos
,
data
.
buffer
,
0
,
data
.
byteL
ength
));
}
private
getProvider
(
handle
:
number
):
vscode
.
FileSystemProvider
{
...
...
src/vs/workbench/api/node/extHostExtensionService.ts
浏览文件 @
ba4735d7
...
...
@@ -31,6 +31,7 @@ import { IWorkspace } from 'vs/platform/workspace/common/workspace';
import
{
Schemas
}
from
'
vs/base/common/network
'
;
import
{
withNullAsUndefined
}
from
'
vs/base/common/types
'
;
import
{
realpath
}
from
'
vs/base/node/extpath
'
;
import
{
VSBuffer
}
from
'
vs/base/common/buffer
'
;
class
ExtensionMemento
implements
IExtensionMemento
{
...
...
@@ -752,13 +753,12 @@ export class ExtHostExtensionService implements ExtHostExtensionServiceShape {
return
n
;
}
public
async
$test_up
(
b
:
Buffer
):
Promise
<
number
>
{
return
b
.
l
ength
;
public
async
$test_up
(
b
:
VS
Buffer
):
Promise
<
number
>
{
return
b
.
byteL
ength
;
}
public
async
$test_down
(
size
:
number
):
Promise
<
Buffer
>
{
const
b
=
Buffer
.
alloc
(
size
,
Math
.
random
()
%
256
);
return
b
;
public
async
$test_down
(
size
:
number
):
Promise
<
VSBuffer
>
{
return
VSBuffer
.
wrap
(
Buffer
.
alloc
(
size
,
Math
.
random
()
%
256
));
}
}
...
...
src/vs/workbench/services/extensions/common/rpcProtocol.ts
浏览文件 @
ba4735d7
...
...
@@ -739,7 +739,6 @@ class MessageIO {
}
private
static
_serializeReplyOKVSBuffer
(
req
:
number
,
res
:
VSBuffer
):
VSBuffer
{
let
len
=
0
;
len
+=
MessageBuffer
.
sizeVSBuffer
(
res
);
...
...
@@ -809,10 +808,10 @@ const enum MessageType {
Cancel
=
6
,
ReplyOKEmpty
=
7
,
ReplyOKBuffer
=
8
,
ReplyOKVSBuffer
=
8
,
ReplyOKJSON
=
9
,
ReplyErrError
=
1
0
,
ReplyErrEmpty
=
1
1
,
ReplyOKVSBuffer
=
9
,
ReplyOKJSON
=
10
,
ReplyErrError
=
1
1
,
ReplyErrEmpty
=
1
2
,
}
const
enum
ArgType
{
...
...
src/vs/workbench/services/extensions/electron-browser/extensionHostProcessManager.ts
浏览文件 @
ba4735d7
...
...
@@ -27,6 +27,7 @@ import { Extensions as ActionExtensions, IWorkbenchActionRegistry } from 'vs/wor
import
{
IEditorService
}
from
'
vs/workbench/services/editor/common/editorService
'
;
import
{
IUntitledResourceInput
}
from
'
vs/workbench/common/editor
'
;
import
{
StopWatch
}
from
'
vs/base/common/stopwatch
'
;
import
{
VSBuffer
}
from
'
vs/base/common/buffer
'
;
// Enable to see detailed message communication between window and extension host
const
LOG_EXTENSION_HOST_COMMUNICATION
=
false
;
...
...
@@ -154,7 +155,7 @@ export class ExtensionHostProcessManager extends Disposable {
let
b
=
Buffer
.
alloc
(
SIZE
,
Math
.
random
()
%
256
);
const
sw
=
StopWatch
.
create
(
true
);
await
proxy
.
$test_up
(
b
);
await
proxy
.
$test_up
(
VSBuffer
.
wrap
(
b
)
);
sw
.
stop
();
return
ExtensionHostProcessManager
.
_convert
(
SIZE
,
sw
.
elapsed
());
}
...
...
src/vs/workbench/services/files/node/streams.ts
浏览文件 @
ba4735d7
...
...
@@ -127,7 +127,7 @@ function createSimpleReadable(provider: IFileSystemProvider, resource: URI, posi
return
;
}
this
.
_readOperation
=
provider
.
readFile
!
(
resource
).
then
(
data
=>
{
this
.
push
(
data
.
slice
(
position
));
this
.
push
(
Buffer
.
from
(
data
.
buffer
,
data
.
byteOffset
,
data
.
byteLength
)
.
slice
(
position
));
this
.
push
(
null
);
},
err
=>
{
this
.
emit
(
'
error
'
,
err
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录