Handle up/down on server
This commit is contained in:
parent
3f6cbfa4dd
commit
ae43e2016f
|
@ -285,12 +285,14 @@ export class NodeProxyService implements INodeProxyService {
|
||||||
public readonly onMessage = this._onMessage.event;
|
public readonly onMessage = this._onMessage.event;
|
||||||
private readonly _$onMessage = new Emitter<string>();
|
private readonly _$onMessage = new Emitter<string>();
|
||||||
public readonly $onMessage = this._$onMessage.event;
|
public readonly $onMessage = this._$onMessage.event;
|
||||||
|
public readonly _onDown = new Emitter<void>();
|
||||||
|
public readonly onDown = this._onDown.event;
|
||||||
|
public readonly _onUp = new Emitter<void>();
|
||||||
|
public readonly onUp = this._onUp.event;
|
||||||
|
|
||||||
|
// Unused because the server connection will never permanently close.
|
||||||
private readonly _onClose = new Emitter<void>();
|
private readonly _onClose = new Emitter<void>();
|
||||||
public readonly onClose = this._onClose.event;
|
public readonly onClose = this._onClose.event;
|
||||||
private readonly _onDown = new Emitter<void>();
|
|
||||||
public readonly onDown = this._onDown.event;
|
|
||||||
private readonly _onUp = new Emitter<void>();
|
|
||||||
public readonly onUp = this._onUp.event;
|
|
||||||
|
|
||||||
public constructor() {
|
public constructor() {
|
||||||
// TODO: close/down/up
|
// TODO: close/down/up
|
||||||
|
|
|
@ -61,7 +61,7 @@ import { ExtensionEnvironmentChannel, FileProviderChannel, NodeProxyService } fr
|
||||||
import { Connection, ExtensionHostConnection, ManagementConnection } from "vs/server/src/node/connection";
|
import { Connection, ExtensionHostConnection, ManagementConnection } from "vs/server/src/node/connection";
|
||||||
import { TelemetryClient } from "vs/server/src/node/insights";
|
import { TelemetryClient } from "vs/server/src/node/insights";
|
||||||
import { getLocaleFromConfig, getNlsConfiguration } from "vs/server/src/node/nls";
|
import { getLocaleFromConfig, getNlsConfiguration } from "vs/server/src/node/nls";
|
||||||
import { NodeProxyChannel } from "vs/server/src/common/nodeProxy";
|
import { NodeProxyChannel, INodeProxyService } from "vs/server/src/common/nodeProxy";
|
||||||
import { Protocol } from "vs/server/src/node/protocol";
|
import { Protocol } from "vs/server/src/node/protocol";
|
||||||
import { TelemetryChannel } from "vs/server/src/common/telemetry";
|
import { TelemetryChannel } from "vs/server/src/common/telemetry";
|
||||||
import { UpdateService } from "vs/server/src/node/update";
|
import { UpdateService } from "vs/server/src/node/update";
|
||||||
|
@ -621,6 +621,11 @@ export class MainServer extends Server {
|
||||||
this._onDidClientConnect.fire({
|
this._onDidClientConnect.fire({
|
||||||
protocol, onDidClientDisconnect: connection.onClose,
|
protocol, onDidClientDisconnect: connection.onClose,
|
||||||
});
|
});
|
||||||
|
// NOTE: We can do this because we only have one connection at a
|
||||||
|
// time but if that changes we need a way to determine which clients
|
||||||
|
// belong to a connection and dispose only those.
|
||||||
|
(this.services.get(INodeProxyService) as NodeProxyService)._onUp.fire();
|
||||||
|
connection.onClose(() => (this.services.get(INodeProxyService) as NodeProxyService)._onDown.fire());
|
||||||
} else {
|
} else {
|
||||||
const buffer = protocol.readEntireBuffer();
|
const buffer = protocol.readEntireBuffer();
|
||||||
connection = new ExtensionHostConnection(
|
connection = new ExtensionHostConnection(
|
||||||
|
@ -695,6 +700,8 @@ export class MainServer extends Server {
|
||||||
const instantiationService = new InstantiationService(this.services);
|
const instantiationService = new InstantiationService(this.services);
|
||||||
const localizationService = instantiationService.createInstance(LocalizationsService);
|
const localizationService = instantiationService.createInstance(LocalizationsService);
|
||||||
this.services.set(ILocalizationsService, localizationService);
|
this.services.set(ILocalizationsService, localizationService);
|
||||||
|
const proxyService = instantiationService.createInstance(NodeProxyService);
|
||||||
|
this.services.set(INodeProxyService, proxyService);
|
||||||
this.ipc.registerChannel("localizations", new LocalizationsChannel(localizationService));
|
this.ipc.registerChannel("localizations", new LocalizationsChannel(localizationService));
|
||||||
instantiationService.invokeFunction(() => {
|
instantiationService.invokeFunction(() => {
|
||||||
instantiationService.createInstance(LogsDataCleaner);
|
instantiationService.createInstance(LogsDataCleaner);
|
||||||
|
@ -708,7 +715,7 @@ export class MainServer extends Server {
|
||||||
const requestChannel = new RequestChannel(this.services.get(IRequestService) as IRequestService);
|
const requestChannel = new RequestChannel(this.services.get(IRequestService) as IRequestService);
|
||||||
const telemetryChannel = new TelemetryChannel(telemetryService);
|
const telemetryChannel = new TelemetryChannel(telemetryService);
|
||||||
const updateChannel = new UpdateChannel(instantiationService.createInstance(UpdateService));
|
const updateChannel = new UpdateChannel(instantiationService.createInstance(UpdateService));
|
||||||
const nodeProxyChannel = new NodeProxyChannel(instantiationService.createInstance(NodeProxyService));
|
const nodeProxyChannel = new NodeProxyChannel(proxyService);
|
||||||
|
|
||||||
this.ipc.registerChannel("extensions", extensionsChannel);
|
this.ipc.registerChannel("extensions", extensionsChannel);
|
||||||
this.ipc.registerChannel("remoteextensionsenvironment", extensionsEnvironmentChannel);
|
this.ipc.registerChannel("remoteextensionsenvironment", extensionsEnvironmentChannel);
|
||||||
|
|
Loading…
Reference in New Issue