Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
a8001039
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
a8001039
编写于
9月 24, 2021
作者:
B
Benjamin Pasero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
watcher - set a lower debounce delay
上级
16720eb3
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
33 addition
and
11 deletion
+33
-11
src/vs/platform/files/node/watcher/nsfw/nsfwWatcherService.ts
...vs/platform/files/node/watcher/nsfw/nsfwWatcherService.ts
+18
-7
src/vs/platform/files/node/watcher/watcher.ts
src/vs/platform/files/node/watcher/watcher.ts
+4
-4
src/vs/platform/files/test/node/recursiveWatcher.test.ts
src/vs/platform/files/test/node/recursiveWatcher.test.ts
+11
-0
未找到文件。
src/vs/platform/files/node/watcher/nsfw/nsfwWatcherService.ts
浏览文件 @
a8001039
...
...
@@ -204,13 +204,7 @@ export class NsfwWatcherService extends Disposable implements IWatcherService {
const
normalizedEvents
=
normalizeFileChanges
(
this
.
normalizeEvents
(
events
,
request
,
realBasePathDiffers
,
realBasePathLength
));
this
.
emitEvents
(
normalizedEvents
);
});
},
{
errorCallback
:
error
=>
{
if
(
!
watcher
.
token
.
isCancellationRequested
)
{
this
.
onError
(
error
,
watcher
);
// error handling only if we are not disposed yet
}
}
}).
then
(
async
nsfwWatcher
=>
{
},
this
.
getOptions
(
watcher
)).
then
(
async
nsfwWatcher
=>
{
// Begin watching unless disposed already
if
(
!
watcher
.
token
.
isCancellationRequested
)
{
...
...
@@ -225,6 +219,23 @@ export class NsfwWatcherService extends Disposable implements IWatcherService {
});
}
protected
getOptions
(
watcher
:
IWatcher
):
nsfw
.
Options
{
return
{
// We must install an error callback, otherwise any error
// that is thrown from the watcher will result in process exit
errorCallback
:
error
=>
{
if
(
!
watcher
.
token
.
isCancellationRequested
)
{
this
.
onError
(
error
,
watcher
);
// error handling only if we are not disposed yet
}
},
// The default delay of NSFW is 500 but we already do some
// debouncing in our code so we reduce the delay slightly
debounceMS
:
100
};
}
private
emitEvents
(
events
:
IDiskFileChange
[]):
void
{
// Send outside
...
...
src/vs/platform/files/node/watcher/watcher.ts
浏览文件 @
a8001039
...
...
@@ -50,7 +50,7 @@ export function normalizeFileChanges(changes: IDiskFileChange[]): IDiskFileChang
class
EventNormalizer
{
private
readonly
normalized
:
IDiskFileChange
[]
=
[]
;
private
readonly
normalized
=
new
Set
<
IDiskFileChange
>
()
;
private
readonly
mapPathToChange
=
new
Map
<
string
,
IDiskFileChange
>
();
processEvent
(
event
:
IDiskFileChange
):
void
{
...
...
@@ -64,7 +64,7 @@ class EventNormalizer {
// ignore CREATE followed by DELETE in one go
if
(
currentChangeType
===
FileChangeType
.
ADDED
&&
newChangeType
===
FileChangeType
.
DELETED
)
{
this
.
mapPathToChange
.
delete
(
event
.
path
);
this
.
normalized
.
splice
(
this
.
normalized
.
indexOf
(
existingEvent
),
1
);
this
.
normalized
.
delete
(
existingEvent
);
}
// flatten DELETE followed by CREATE into CHANGE
...
...
@@ -83,7 +83,7 @@ class EventNormalizer {
// Otherwise store new
else
{
this
.
normalized
.
push
(
event
);
this
.
normalized
.
add
(
event
);
this
.
mapPathToChange
.
set
(
event
.
path
,
event
);
}
}
...
...
@@ -99,7 +99,7 @@ class EventNormalizer {
// 1.) split ADD/CHANGE and DELETED events
// 2.) sort short deleted paths to the top
// 3.) for each DELETE, check if there is a deleted parent and ignore the event in that case
return
this
.
normalized
.
filter
(
e
=>
{
return
Array
.
from
(
this
.
normalized
)
.
filter
(
e
=>
{
if
(
e
.
type
!==
FileChangeType
.
DELETED
)
{
addOrChangeEvents
.
push
(
e
);
...
...
src/vs/platform/files/test/node/recursiveWatcher.test.ts
浏览文件 @
a8001039
...
...
@@ -34,6 +34,17 @@ flakySuite('Recursive Watcher', () => {
await
watcher
.
instance
;
}
}
protected
override
getOptions
(
watcher
:
any
)
{
return
{
...
super
.
getOptions
(
watcher
),
// required to let tests pass properly. with a smaller value
// somehow `fsevents` on macOS seems to report events from
// the past so that the event listening will assume wrongly
debounceMS
:
500
};
}
}
let
testDir
:
string
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录