Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
徽霖
Vscode
提交
a678fe0b
V
Vscode
项目概览
徽霖
/
Vscode
通知
9
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,发现更多精彩内容 >>
提交
a678fe0b
编写于
1月 26, 2016
作者:
S
Sofian Hnaide
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix #2311
上级
03df65d8
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
48 addition
and
23 deletion
+48
-23
src/vs/platform/telemetry/electron-browser/electronTelemetryService.ts
...rm/telemetry/electron-browser/electronTelemetryService.ts
+48
-23
未找到文件。
src/vs/platform/telemetry/electron-browser/electronTelemetryService.ts
浏览文件 @
a678fe0b
...
...
@@ -7,7 +7,7 @@ import getmac = require('getmac');
import
crypto
=
require
(
'
crypto
'
);
import
{
MainTelemetryService
,
TelemetryServiceConfig
}
from
'
vs/platform/telemetry/browser/mainTelemetryService
'
;
import
{
ITelemetryService
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
ITelemetryService
,
ITelemetryInfo
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
IStorageService
,
StorageScope
}
from
'
vs/platform/storage/common/storage
'
;
import
errors
=
require
(
'
vs/base/common/errors
'
);
import
uuid
=
require
(
'
vs/base/common/uuid
'
);
...
...
@@ -19,49 +19,74 @@ class StorageKeys {
export
class
ElectronTelemetryService
extends
MainTelemetryService
implements
ITelemetryService
{
private
_setupIds
:
Promise
<
ITelemetryInfo
>
;
constructor
(@
IStorageService
private
storageService
:
IStorageService
,
config
?:
TelemetryServiceConfig
)
{
super
(
config
);
this
.
setupInstanceId
();
this
.
setupMachineId
();
this
.
_setupIds
=
this
.
setupIds
();
}
/**
* override the base getTelemetryInfo to make sure this information is not retrieved before it's ready
*/
public
getTelemetryInfo
():
Promise
<
ITelemetryInfo
>
{
return
this
.
_setupIds
;
}
private
setupInstanceId
(){
private
setupIds
():
Promise
<
ITelemetryInfo
>
{
return
Promise
.
all
([
this
.
setupInstanceId
(),
this
.
setupMachineId
()]).
then
(()
=>
{
return
{
machineId
:
this
.
machineId
,
instanceId
:
this
.
instanceId
,
sessionId
:
this
.
sessionId
}
});
}
private
setupInstanceId
():
Promise
<
string
>
{
var
instanceId
=
this
.
storageService
.
get
(
StorageKeys
.
InstanceId
);
if
(
!
instanceId
)
{
instanceId
=
uuid
.
generateUuid
();
this
.
storageService
.
store
(
StorageKeys
.
InstanceId
,
instanceId
);
}
this
.
instanceId
=
instanceId
;
return
Promise
.
resolve
(
this
.
instanceId
);
}
private
setupMachineId
(){
private
setupMachineId
()
:
Promise
<
string
>
{
var
machineId
=
this
.
storageService
.
get
(
StorageKeys
.
MachineId
);
if
(
machineId
)
{
this
.
machineId
=
machineId
;
return
Promise
.
resolve
(
this
.
machineId
);
}
else
{
try
{
// add a unique machine id as a hash of the macAddress
getmac
.
getMac
(
(
error
,
macAddress
)
=>
{
if
(
!
error
)
{
// crypt machine id
machineId
=
crypto
.
createHash
(
'
sha256
'
).
update
(
macAddress
,
'
utf8
'
).
digest
(
'
hex
'
);
}
else
{
// generate a UUID
machineId
=
uuid
.
generateUuid
();
}
return
new
Promise
((
resolve
,
reject
)
=>
{
try
{
// add a unique machine id as a hash of the macAddress
getmac
.
getMac
((
error
,
macAddress
)
=>
{
if
(
!
error
)
{
// crypt machine id
machineId
=
crypto
.
createHash
(
'
sha256
'
).
update
(
macAddress
,
'
utf8
'
).
digest
(
'
hex
'
);
}
else
{
// generate a UUID
machineId
=
uuid
.
generateUuid
();
}
this
.
machineId
=
machineId
;
this
.
storageService
.
store
(
StorageKeys
.
MachineId
,
machineId
);
resolve
(
this
.
machineId
);
});
}
catch
(
err
)
{
errors
.
onUnexpectedError
(
err
);
// generate a UUID
machineId
=
uuid
.
generateUuid
();
this
.
machineId
=
machineId
;
this
.
storageService
.
store
(
StorageKeys
.
MachineId
,
machineId
);
}
);
}
catch
(
err
)
{
errors
.
onUnexpectedError
(
err
);
resolve
(
this
.
machineId
);
}
}
);
// generate a UUID
machineId
=
uuid
.
generateUuid
();
this
.
machineId
=
machineId
;
this
.
storageService
.
store
(
StorageKeys
.
MachineId
,
machineId
);
}
}
}
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录