Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
55e10fd7
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,体验更适合开发者的 AI 搜索 >>
提交
55e10fd7
编写于
1月 15, 2021
作者:
B
Benjamin Pasero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
shared process - introduce a separate service for management
上级
c082930a
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
70 addition
and
27 deletion
+70
-27
src/vs/code/electron-main/app.ts
src/vs/code/electron-main/app.ts
+5
-5
src/vs/code/electron-main/sharedProcess.ts
src/vs/code/electron-main/sharedProcess.ts
+1
-2
src/vs/platform/sharedProcess/common/sharedProcessManagement.ts
.../platform/sharedProcess/common/sharedProcessManagement.ts
+17
-0
src/vs/platform/sharedProcess/electron-main/sharedProcessManagementMainService.ts
...ocess/electron-main/sharedProcessManagementMainService.ts
+5
-15
src/vs/platform/sharedProcess/node/sharedProcess.ts
src/vs/platform/sharedProcess/node/sharedProcess.ts
+14
-0
src/vs/workbench/services/sharedProcess/electron-browser/sharedProcessManagementService.ts
...rocess/electron-browser/sharedProcessManagementService.ts
+23
-0
src/vs/workbench/services/sharedProcess/electron-browser/sharedProcessService.ts
...es/sharedProcess/electron-browser/sharedProcessService.ts
+4
-5
src/vs/workbench/workbench.desktop.main.ts
src/vs/workbench/workbench.desktop.main.ts
+1
-0
未找到文件。
src/vs/code/electron-main/app.ts
浏览文件 @
55e10fd7
...
...
@@ -68,7 +68,7 @@ import { IDiagnosticsService } from 'vs/platform/diagnostics/node/diagnosticsSer
import
{
ExtensionHostDebugBroadcastChannel
}
from
'
vs/platform/debug/common/extensionHostDebugIpc
'
;
import
{
ElectronExtensionHostDebugBroadcastChannel
}
from
'
vs/platform/debug/electron-main/extensionHostDebugIpc
'
;
import
{
INativeHostMainService
,
NativeHostMainService
}
from
'
vs/platform/native/electron-main/nativeHostMainService
'
;
import
{
ISharedProcessMa
inService
,
SharedProcessMainService
}
from
'
vs/platform/sharedProcess/electron-main/sharedProcess
MainService
'
;
import
{
ISharedProcessMa
nagementMainService
,
SharedProcessManagementMainService
}
from
'
vs/platform/sharedProcess/electron-main/sharedProcessManagement
MainService
'
;
import
{
IDialogMainService
,
DialogMainService
}
from
'
vs/platform/dialogs/electron-main/dialogMainService
'
;
import
{
withNullAsUndefined
}
from
'
vs/base/common/types
'
;
import
{
mnemonicButtonLabel
,
getPathLabel
}
from
'
vs/base/common/labels
'
;
...
...
@@ -509,7 +509,7 @@ export class CodeApplication extends Disposable {
services
.
set
(
IWindowsMainService
,
new
SyncDescriptor
(
WindowsMainService
,
[
machineId
,
this
.
userEnv
]));
services
.
set
(
IDialogMainService
,
new
SyncDescriptor
(
DialogMainService
));
services
.
set
(
ISharedProcessMa
inService
,
new
SyncDescriptor
(
SharedProcess
MainService
,
[
sharedProcess
]));
services
.
set
(
ISharedProcessMa
nagementMainService
,
new
SyncDescriptor
(
SharedProcessManagement
MainService
,
[
sharedProcess
]));
services
.
set
(
ILaunchMainService
,
new
SyncDescriptor
(
LaunchMainService
));
services
.
set
(
IDiagnosticsService
,
createChannelSender
(
getDelayedChannel
(
sharedProcessReady
.
then
(
client
=>
client
.
getChannel
(
'
diagnostics
'
)))));
...
...
@@ -621,9 +621,9 @@ export class CodeApplication extends Disposable {
electronIpcServer
.
registerChannel
(
'
nativeHost
'
,
nativeHostChannel
);
sharedProcessClient
.
then
(
client
=>
client
.
registerChannel
(
'
nativeHost
'
,
nativeHostChannel
));
const
sharedProcessMain
Service
=
accessor
.
get
(
ISharedProcess
MainService
);
const
sharedProcess
Channel
=
createChannelReceiver
(
sharedProcessMain
Service
);
electronIpcServer
.
registerChannel
(
'
sharedProcess
'
,
sharedProcess
Channel
);
const
sharedProcessMain
ManagementService
=
accessor
.
get
(
ISharedProcessManagement
MainService
);
const
sharedProcess
ManagementChannel
=
createChannelReceiver
(
sharedProcessMainManagement
Service
);
electronIpcServer
.
registerChannel
(
'
sharedProcess
Management
'
,
sharedProcessManagement
Channel
);
const
workspacesService
=
accessor
.
get
(
IWorkspacesService
);
const
workspacesChannel
=
createChannelReceiver
(
workspacesService
);
...
...
src/vs/code/electron-main/sharedProcess.ts
浏览文件 @
55e10fd7
...
...
@@ -5,14 +5,13 @@
import
{
BrowserWindow
,
ipcMain
,
Event
,
MessagePortMain
}
from
'
electron
'
;
import
{
IEnvironmentMainService
}
from
'
vs/platform/environment/electron-main/environmentMainService
'
;
import
{
ISharedProcess
}
from
'
vs/platform/sharedProcess/electron-main/sharedProcessMainService
'
;
import
{
Barrier
}
from
'
vs/base/common/async
'
;
import
{
ILogService
}
from
'
vs/platform/log/common/log
'
;
import
{
ILifecycleMainService
}
from
'
vs/platform/lifecycle/electron-main/lifecycleMainService
'
;
import
{
IThemeMainService
}
from
'
vs/platform/theme/electron-main/themeMainService
'
;
import
{
FileAccess
}
from
'
vs/base/common/network
'
;
import
{
browserCodeLoadingCacheStrategy
}
from
'
vs/base/common/platform
'
;
import
{
ISharedProcessConfiguration
}
from
'
vs/platform/sharedProcess/node/sharedProcess
'
;
import
{
ISharedProcess
,
ISharedProcess
Configuration
}
from
'
vs/platform/sharedProcess/node/sharedProcess
'
;
import
{
Disposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
connect
as
connectMessagePort
}
from
'
vs/base/parts/ipc/electron-main/ipc.mp
'
;
import
{
assertIsDefined
}
from
'
vs/base/common/types
'
;
...
...
src/vs/platform/sharedProcess/common/sharedProcessManagement.ts
0 → 100644
浏览文件 @
55e10fd7
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import
{
createDecorator
}
from
'
vs/platform/instantiation/common/instantiation
'
;
export
const
ISharedProcessManagementService
=
createDecorator
<
ISharedProcessManagementService
>
(
'
sharedProcessManagement
'
);
export
interface
ISharedProcessManagementService
{
readonly
_serviceBrand
:
undefined
;
whenReady
():
Promise
<
void
>
;
toggleWindow
():
Promise
<
void
>
;
}
src/vs/platform/sharedProcess/electron-main/sharedProcessMainService.ts
→
src/vs/platform/sharedProcess/electron-main/sharedProcessMa
nagementMa
inService.ts
浏览文件 @
55e10fd7
...
...
@@ -4,24 +4,14 @@
*--------------------------------------------------------------------------------------------*/
import
{
createDecorator
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
ISharedProcess
}
from
'
vs/platform/sharedProcess/node/sharedProcess
'
;
import
{
ISharedProcessManagementService
}
from
'
vs/platform/sharedProcess/common/sharedProcessManagement
'
;
export
const
ISharedProcessMa
inService
=
createDecorator
<
ISharedProcessMainService
>
(
'
sharedProcess
MainService
'
);
export
const
ISharedProcessMa
nagementMainService
=
createDecorator
<
ISharedProcessManagementMainService
>
(
'
sharedProcessManagement
MainService
'
);
export
interface
ISharedProcessMa
inService
{
export
interface
ISharedProcessMa
nagementMainService
extends
ISharedProcessManagementService
{
}
readonly
_serviceBrand
:
undefined
;
whenReady
():
Promise
<
void
>
;
toggleWindow
():
Promise
<
void
>
;
}
export
interface
ISharedProcess
{
whenReady
():
Promise
<
void
>
;
toggle
():
void
;
}
export
class
SharedProcessMainService
implements
ISharedProcessMainService
{
export
class
SharedProcessManagementMainService
implements
ISharedProcessManagementMainService
{
declare
readonly
_serviceBrand
:
undefined
;
...
...
src/vs/platform/sharedProcess/node/sharedProcess.ts
浏览文件 @
55e10fd7
...
...
@@ -6,6 +6,20 @@
import
{
NativeParsedArgs
}
from
'
vs/platform/environment/common/argv
'
;
import
{
LogLevel
}
from
'
vs/platform/log/common/log
'
;
export
interface
ISharedProcess
{
/**
* Signals the shared process has finished initialization.
*/
whenReady
():
Promise
<
void
>
;
/**
* Toggles the visibility of the otherwise hidden
* shared process window.
*/
toggle
():
void
;
}
export
interface
ISharedProcessConfiguration
{
readonly
machineId
:
string
;
readonly
windowId
:
number
;
...
...
src/vs/workbench/services/sharedProcess/electron-browser/sharedProcessManagementService.ts
0 → 100644
浏览文件 @
55e10fd7
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import
{
createChannelSender
}
from
'
vs/base/parts/ipc/common/ipc
'
;
import
{
IMainProcessService
}
from
'
vs/platform/ipc/electron-sandbox/mainProcessService
'
;
import
{
registerSingleton
}
from
'
vs/platform/instantiation/common/extensions
'
;
import
{
ISharedProcessManagementService
}
from
'
vs/platform/sharedProcess/common/sharedProcessManagement
'
;
// @ts-ignore: interface is implemented via proxy
export
class
SharedProcessManagementService
implements
ISharedProcessManagementService
{
declare
readonly
_serviceBrand
:
undefined
;
constructor
(
@
IMainProcessService
mainProcessService
:
IMainProcessService
)
{
return
createChannelSender
<
ISharedProcessManagementService
>
(
mainProcessService
.
getChannel
(
'
sharedProcessManagement
'
));
}
}
registerSingleton
(
ISharedProcessManagementService
,
SharedProcessManagementService
,
true
);
src/vs/workbench/services/sharedProcess/electron-browser/sharedProcessService.ts
浏览文件 @
55e10fd7
...
...
@@ -8,7 +8,6 @@ import { IpcRendererEvent } from 'vs/base/parts/sandbox/electron-sandbox/electro
import
{
ipcRenderer
}
from
'
vs/base/parts/sandbox/electron-sandbox/globals
'
;
import
{
Client
as
MessagePortClient
}
from
'
vs/base/parts/ipc/common/ipc.mp
'
;
import
{
IChannel
,
IServerChannel
,
getDelayedChannel
}
from
'
vs/base/parts/ipc/common/ipc
'
;
import
{
IMainProcessService
}
from
'
vs/platform/ipc/electron-sandbox/mainProcessService
'
;
import
{
ISharedProcessService
}
from
'
vs/platform/ipc/electron-browser/sharedProcessService
'
;
import
{
registerSingleton
}
from
'
vs/platform/instantiation/common/extensions
'
;
import
{
INativeHostService
}
from
'
vs/platform/native/electron-sandbox/native
'
;
...
...
@@ -16,16 +15,16 @@ import { generateUuid } from 'vs/base/common/uuid';
import
{
ILogService
}
from
'
vs/platform/log/common/log
'
;
import
{
ILifecycleService
}
from
'
vs/workbench/services/lifecycle/common/lifecycle
'
;
import
{
Disposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
ISharedProcessManagementService
}
from
'
vs/platform/sharedProcess/common/sharedProcessManagement
'
;
export
class
SharedProcessService
extends
Disposable
implements
ISharedProcessService
{
declare
readonly
_serviceBrand
:
undefined
;
private
readonly
sharedProcessMainChannel
=
this
.
mainProcessService
.
getChannel
(
'
sharedProcess
'
);
private
readonly
withSharedProcessConnection
:
Promise
<
MessagePortClient
>
;
constructor
(
@
I
MainProcessService
private
readonly
mainProcessService
:
IMainProcess
Service
,
@
I
SharedProcessManagementService
private
readonly
sharedProcessManagementService
:
ISharedProcessManagement
Service
,
@
INativeHostService
private
readonly
nativeHostService
:
INativeHostService
,
@
ILogService
private
readonly
logService
:
ILogService
,
@
ILifecycleService
private
readonly
lifecycleService
:
ILifecycleService
...
...
@@ -47,7 +46,7 @@ export class SharedProcessService extends Disposable implements ISharedProcessSe
this
.
logService
.
trace
(
'
Workbench->SharedProcess#connect
'
);
// await the shared process to be ready
await
this
.
sharedProcessMa
inChannel
.
call
(
'
whenReady
'
);
await
this
.
sharedProcessMa
nagementService
.
whenReady
(
);
// Ask to create message channel inside the window
// and send over a UUID to correlate the response
...
...
@@ -74,7 +73,7 @@ export class SharedProcessService extends Disposable implements ISharedProcessSe
}
toggleWindow
():
Promise
<
void
>
{
return
this
.
sharedProcessMa
inChannel
.
call
(
'
toggleWindow
'
);
return
this
.
sharedProcessMa
nagementService
.
toggleWindow
(
);
}
}
...
...
src/vs/workbench/workbench.desktop.main.ts
浏览文件 @
55e10fd7
...
...
@@ -78,6 +78,7 @@ import 'vs/workbench/services/userDataSync/electron-browser/userDataSyncService'
import
'
vs/workbench/services/userDataSync/electron-browser/userDataSyncAccountService
'
;
import
'
vs/workbench/services/userDataSync/electron-browser/userDataSyncStoreManagementService
'
;
import
'
vs/workbench/services/userDataSync/electron-browser/userDataAutoSyncService
'
;
import
'
vs/workbench/services/sharedProcess/electron-browser/sharedProcessManagementService
'
;
import
'
vs/workbench/services/sharedProcess/electron-browser/sharedProcessService
'
;
import
'
vs/workbench/services/localizations/electron-browser/localizationsService
'
;
import
'
vs/workbench/services/diagnostics/electron-browser/diagnosticsService
'
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录