Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
徽霖
Vscode
提交
b71ffd7a
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,发现更多精彩内容 >>
提交
b71ffd7a
编写于
9月 20, 2016
作者:
J
Joao Moreno
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ipc: unify messages
上级
bd1a69c0
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
36 addition
and
30 deletion
+36
-30
src/vs/base/parts/ipc/common/ipc.ts
src/vs/base/parts/ipc/common/ipc.ts
+36
-30
未找到文件。
src/vs/base/parts/ipc/common/ipc.ts
浏览文件 @
b71ffd7a
...
...
@@ -9,14 +9,26 @@ import { Promise, TPromise } from 'vs/base/common/winjs.base';
import
{
IDisposable
,
toDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
Event
,
{
Emitter
}
from
'
vs/base/common/event
'
;
enum
RequestType
{
Common
,
Cancel
enum
MessageType
{
RequestCommon
,
RequestCancel
,
ResponseInitialize
,
ResponseSuccess
,
ResponseProgress
,
ResponseError
,
ResponseErrorObj
}
interface
IRawRequest
{
function
isResponse
(
messageType
:
MessageType
):
boolean
{
return
messageType
>=
MessageType
.
ResponseInitialize
;
}
interface
IRawMessage
{
id
:
number
;
type
:
RequestType
;
type
:
MessageType
;
}
interface
IRawRequest
extends
IRawMessage
{
channelName
?:
string
;
name
?:
string
;
arg
?:
any
;
...
...
@@ -28,17 +40,7 @@ interface IRequest {
flush
?:
()
=>
void
;
}
enum
ResponseType
{
Initialize
,
Success
,
Progress
,
Error
,
ErrorObj
}
interface
IRawResponse
{
id
:
number
;
type
:
ResponseType
;
interface
IRawResponse
extends
IRawMessage
{
data
:
any
;
}
...
...
@@ -77,7 +79,7 @@ export class Server {
this
.
channels
=
Object
.
create
(
null
);
this
.
activeRequests
=
Object
.
create
(
null
);
this
.
protocol
.
onMessage
(
r
=>
this
.
onMessage
(
r
));
this
.
protocol
.
send
(
<
IRawResponse
>
{
type
:
ResponseType
.
Initialize
});
this
.
protocol
.
send
(
<
IRawResponse
>
{
type
:
MessageType
.
Response
Initialize
});
}
registerChannel
(
channelName
:
string
,
channel
:
IChannel
):
void
{
...
...
@@ -86,11 +88,11 @@ export class Server {
private
onMessage
(
request
:
IRawRequest
):
void
{
switch
(
request
.
type
)
{
case
RequestType
.
Common
:
case
MessageType
.
Request
Common
:
this
.
onCommonRequest
(
request
);
break
;
case
RequestType
.
Cancel
:
case
MessageType
.
Request
Cancel
:
this
.
onCancelRequest
(
request
);
break
;
}
...
...
@@ -109,7 +111,7 @@ export class Server {
const
id
=
request
.
id
;
const
requestPromise
=
promise
.
then
(
data
=>
{
this
.
protocol
.
send
(
<
IRawResponse
>
{
id
,
data
,
type
:
ResponseType
.
Success
});
this
.
protocol
.
send
(
<
IRawResponse
>
{
id
,
data
,
type
:
MessageType
.
Response
Success
});
delete
this
.
activeRequests
[
request
.
id
];
},
data
=>
{
if
(
data
instanceof
Error
)
{
...
...
@@ -117,14 +119,14 @@ export class Server {
message
:
data
.
message
,
name
:
data
.
name
,
stack
:
data
.
stack
?
data
.
stack
.
split
(
'
\n
'
)
:
void
0
},
type
:
ResponseType
.
Error
});
},
type
:
MessageType
.
Response
Error
});
}
else
{
this
.
protocol
.
send
(
<
IRawResponse
>
{
id
,
data
,
type
:
ResponseType
.
ErrorObj
});
this
.
protocol
.
send
(
<
IRawResponse
>
{
id
,
data
,
type
:
MessageType
.
Response
ErrorObj
});
}
delete
this
.
activeRequests
[
request
.
id
];
},
data
=>
{
this
.
protocol
.
send
(
<
IRawResponse
>
{
id
,
data
,
type
:
ResponseType
.
Progress
});
this
.
protocol
.
send
(
<
IRawResponse
>
{
id
,
data
,
type
:
MessageType
.
Response
Progress
});
});
this
.
activeRequests
[
request
.
id
]
=
toDisposable
(()
=>
requestPromise
.
cancel
());
...
...
@@ -174,7 +176,7 @@ export class Client implements IClient, IDisposable {
const
request
=
{
raw
:
{
id
:
this
.
lastRequestId
++
,
type
:
RequestType
.
Common
,
type
:
MessageType
.
Request
Common
,
channelName
,
name
,
arg
...
...
@@ -200,12 +202,12 @@ export class Client implements IClient, IDisposable {
return
new
Promise
((
c
,
e
,
p
)
=>
{
this
.
handlers
[
id
]
=
response
=>
{
switch
(
response
.
type
)
{
case
ResponseType
.
Success
:
case
MessageType
.
Response
Success
:
delete
this
.
handlers
[
id
];
c
(
response
.
data
);
break
;
case
ResponseType
.
Error
:
case
MessageType
.
Response
Error
:
delete
this
.
handlers
[
id
];
const
error
=
new
Error
(
response
.
data
.
message
);
(
<
any
>
error
).
stack
=
response
.
data
.
stack
;
...
...
@@ -213,12 +215,12 @@ export class Client implements IClient, IDisposable {
e
(
error
);
break
;
case
ResponseType
.
ErrorObj
:
case
MessageType
.
Response
ErrorObj
:
delete
this
.
handlers
[
id
];
e
(
response
.
data
);
break
;
case
ResponseType
.
Progress
:
case
MessageType
.
Response
Progress
:
p
(
response
.
data
);
break
;
}
...
...
@@ -226,7 +228,7 @@ export class Client implements IClient, IDisposable {
this
.
send
(
request
.
raw
);
},
()
=>
this
.
send
({
id
,
type
:
RequestType
.
Cancel
}));
()
=>
this
.
send
({
id
,
type
:
MessageType
.
Request
Cancel
}));
}
private
bufferRequest
(
request
:
IRequest
):
Promise
{
...
...
@@ -262,7 +264,11 @@ export class Client implements IClient, IDisposable {
}
private
onMessage
(
response
:
IRawResponse
):
void
{
if
(
this
.
state
===
State
.
Uninitialized
&&
response
.
type
===
ResponseType
.
Initialize
)
{
if
(
!
isResponse
(
response
.
type
))
{
return
;
}
if
(
this
.
state
===
State
.
Uninitialized
&&
response
.
type
===
MessageType
.
ResponseInitialize
)
{
this
.
state
=
State
.
Idle
;
this
.
bufferedRequests
.
forEach
(
r
=>
r
.
flush
&&
r
.
flush
());
this
.
bufferedRequests
=
null
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录