Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
b6b7bf91
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,发现更多精彩内容 >>
提交
b6b7bf91
编写于
9月 22, 2016
作者:
S
Sandeep Somavarapu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ChoiceService: ipc
上级
e971497c
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
24 addition
and
13 deletion
+24
-13
src/vs/code/node/sharedProcessMain.ts
src/vs/code/node/sharedProcessMain.ts
+11
-2
src/vs/platform/message/common/messageIpc.ts
src/vs/platform/message/common/messageIpc.ts
+9
-11
src/vs/workbench/electron-browser/shell.ts
src/vs/workbench/electron-browser/shell.ts
+4
-0
未找到文件。
src/vs/code/node/sharedProcessMain.ts
浏览文件 @
b6b7bf91
...
...
@@ -30,8 +30,10 @@ import { TelemetryAppenderChannel } from 'vs/platform/telemetry/common/telemetry
import
{
TelemetryService
,
ITelemetryServiceConfig
}
from
'
vs/platform/telemetry/common/telemetryService
'
;
import
{
AppInsightsAppender
}
from
'
vs/platform/telemetry/node/appInsightsAppender
'
;
import
{
ISharedProcessInitData
}
from
'
./sharedProcess
'
;
import
{
IChoiceService
}
from
'
vs/platform/message/common/message
'
;
import
{
ChoiceChannelClient
}
from
'
vs/platform/message/common/messageIpc
'
;
import
{
WindowEventChannelClient
}
from
'
vs/code/common/windowsIpc
'
;
import
{
IWindowEventService
}
from
'
vs/code/common/windows
'
;
import
{
IWindowEventService
,
ActiveWindowManager
}
from
'
vs/code/common/windows
'
;
function
quit
(
err
?:
Error
)
{
if
(
err
)
{
...
...
@@ -71,6 +73,13 @@ function main(server: Server, initData: ISharedProcessInitData): void {
}));
services
.
set
(
IWindowEventService
,
windowEventService
);
const
activeWindowManager
=
new
ActiveWindowManager
(
windowEventService
);
services
.
set
(
IChoiceService
,
new
ChoiceChannelClient
(
server
.
getChannel
(
'
choice
'
,
{
routeCall
:
(
command
:
any
,
arg
:
any
)
=>
{
return
activeWindowManager
.
activeWindowId
;
}
})));
const
instantiationService
=
new
InstantiationService
(
services
);
instantiationService
.
invokeFunction
(
accessor
=>
{
...
...
src/vs/
workbench/services
/message/common/messageIpc.ts
→
src/vs/
platform
/message/common/messageIpc.ts
浏览文件 @
b6b7bf91
...
...
@@ -7,12 +7,10 @@
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
IChannel
}
from
'
vs/base/parts/ipc/common/ipc
'
;
import
{
IChoiceService
/*, Severity*/
}
from
'
vs/platform/message/common/message
'
;
// TODO@Sandeep implement these guys
import
{
IChoiceService
,
Severity
}
from
'
vs/platform/message/common/message
'
;
export
interface
IChoiceChannel
extends
IChannel
{
// call(command: 'getInstalled'): TPromise<ILocalExtension[]
>;
call
(
command
:
'
choose
'
):
TPromise
<
number
>
;
call
(
command
:
string
,
arg
:
any
):
TPromise
<
any
>
;
}
...
...
@@ -21,22 +19,22 @@ export class ChoiceChannel implements IChoiceChannel {
constructor
(
private
service
:
IChoiceService
)
{
}
call
(
command
:
string
,
arg
:
any
):
TPromise
<
any
>
{
call
(
command
:
string
,
arg
s
:
any
):
TPromise
<
any
>
{
switch
(
command
)
{
// case 'getInstalled': return this.service.getInstalled(arg
);
case
'
choose
'
:
return
this
.
service
.
choose
(
<
Severity
>
args
[
0
],
<
string
>
args
[
1
],
<
string
[]
>
args
[
2
]
);
}
return
TPromise
.
wrapError
(
'
invalid command
'
);
}
}
export
class
ChoiceChannelClient
/*implements IChoiceService*/
{
export
class
ChoiceChannelClient
implements
IChoiceService
{
_serviceBrand
:
any
;
constructor
(
private
channel
:
IChoiceChannel
)
{
}
// getInstalled(type: LocalExtensionType = null): TPromise<ILocalExtension[]> {
// return this.channel.call('getInstalled', type);
// }
choose
(
severity
:
Severity
,
message
:
string
,
options
:
string
[]):
TPromise
<
number
>
{
return
this
.
channel
.
call
(
'
choose
'
,
[
severity
,
message
,
options
]);
}
}
\ No newline at end of file
src/vs/workbench/electron-browser/shell.ts
浏览文件 @
b6b7bf91
...
...
@@ -59,6 +59,7 @@ import {ILifecycleService} from 'vs/platform/lifecycle/common/lifecycle';
import
{
IMarkerService
}
from
'
vs/platform/markers/common/markers
'
;
import
{
IEnvironmentService
}
from
'
vs/platform/environment/common/environment
'
;
import
{
IMessageService
,
IChoiceService
,
Severity
}
from
'
vs/platform/message/common/message
'
;
import
{
ChoiceChannel
}
from
'
vs/platform/message/common/messageIpc
'
;
import
{
ISearchService
}
from
'
vs/platform/search/common/search
'
;
import
{
IThreadService
}
from
'
vs/workbench/services/thread/common/threadService
'
;
import
{
ICommandService
}
from
'
vs/platform/commands/common/commands
'
;
...
...
@@ -228,6 +229,9 @@ export class WorkbenchShell {
const
sharedProcess
=
connectNet
(
this
.
environmentService
.
sharedIPCHandle
,
`window:
${
this
.
windowService
.
getWindowId
()
}
`
);
sharedProcess
.
done
(
client
=>
{
client
.
registerChannel
(
'
choice
'
,
new
ChoiceChannel
(
this
.
messageService
));
client
.
onClose
(()
=>
{
this
.
messageService
.
show
(
Severity
.
Error
,
{
message
:
nls
.
localize
(
'
sharedProcessCrashed
'
,
"
The shared process terminated unexpectedly. Please reload the window to recover.
"
),
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录